siz*_*zle 6 identity ruby-on-rails omniauth
我正在开发一个Rails 3.0应用程序,并使用OmniAuth + Identity进行身份验证注册.我已经实现了一个通过外键与Identity模型绑定的User模型,一切运行良好.现在,我想实现忘记密码功能.
给定用户的电子邮件,我想向他们发送一封电子邮件,其中包含重置密码的链接.该电子邮件包含与用户关联的随机十六进制字符串.
现在,如何重置用户的身份密码?
在Identity数据库表中,它存储为password_digest.我可以覆盖这个吗?
edu*_*udi 10
做这个:
@identity = Identity.find(1)
@identity.password = "newpassword"
@identity.password_confirmation = "newpassword"
@identity.save
Run Code Online (Sandbox Code Playgroud)
在omniauth-identity的问题中,wdspkr说:
一旦您了解omniauth-identity使用ActiveModel的SecurePassword,就可以很容易地解决这个问题.您只需设置password和password_confirmation并更新,而不是设置password_digest.
事实证明事情就是这么简单。只需覆盖Identity表中现有的password_digest即可。使用 BCrypt 库创建password_digest:
require 'bcrypt'
...
class UsersController < ApplicationController
...
def update
@user = User.find(params[:id])
...
user_identity = Identity.find_by_email(@user.email)
unencrypted_password = params[:user][:password].to_s
password_digest = BCrypt::Password.create(unencrypted_password)
user_identity.password_digest = password_digest;
user_identity.save!
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |