How to generate reset password token

前端 未结 4 711
一生所求
一生所求 2021-02-12 14:32

I am using devise gem for authentication.

In my application admin will create the users, so I want the user\'s reset password link when admin creates users.

This

相关标签:
4条回答
  • 2021-02-12 15:10

    You can use user.send_reset_password_instructions for that.

    0 讨论(0)
  • 2021-02-12 15:10

    If you are using devise why are you creating your own password reset token? Devise has a feature for that. http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Recoverable

    In case you wonder this is what devise does when the user wants to reset his password:

      raw, enc = Devise.token_generator.generate(self.class, :reset_password_token)
    
      self.reset_password_token   = enc
      self.reset_password_sent_at = Time.now.utc
      self.save(validate: false)
    

    self is an User object here

    In your URL you then have to pass raw as reset_password_token parameter

    0 讨论(0)
  • 2021-02-12 15:12

    You can generate a token with:

    Devise.token_generator.generate(User, :reset_password_token)
    

    Though this is just a useless string by itself. You need to attach it to the user if you actually want to use it in a link to reset passwords:

    user.reset_password_token = hashed_token
    user.reset_password_sent_at = Time.now.utc
    

    Then send them an email with the link:

    edit_password_url(@user, reset_password_token: @token)
    
    0 讨论(0)
  • 2021-02-12 15:23

    If you don't want it to send the instructions, just set and store the token you can call the private method in devise recoverable concern set_reset_password_token.

    You can do this by doing something like user.send(:set_reset_password_token).

    0 讨论(0)
提交回复
热议问题