我正在开发Rails 3.0应用程序,并使用OmniAuth + Identity进行身份验证注册。我已经实现了一个通过外键绑定到Identity模型的用户模型,并且一切正常。现在,我想实现一个忘记密码功能。OmniAuth +身份忘记密码
给定用户的电子邮件,我想给他们发送一封电子邮件,其中包含一个链接以重置密码。该电子邮件包含与用户关联的随机十六进制字符串。
现在,我该如何重置用户的身份密码?
在Identity数据库表中,它存储为password_digest。我可以覆盖这个吗?
我正在开发Rails 3.0应用程序,并使用OmniAuth + Identity进行身份验证注册。我已经实现了一个通过外键绑定到Identity模型的用户模型,并且一切正常。现在,我想实现一个忘记密码功能。OmniAuth +身份忘记密码
给定用户的电子邮件,我想给他们发送一封电子邮件,其中包含一个链接以重置密码。该电子邮件包含与用户关联的随机十六进制字符串。
现在,我该如何重置用户的身份密码?
在Identity数据库表中,它存储为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