将密码迁移到 Devise

2024-03-16

我正在将用户数据库从 PHP 迁移到 Rails。我已经安装了 Devise Gem,现在运行良好。另外,我还发现了如何将现有用户的密码迁移到 Rails 的提示 我已将旧密码添加到相同的密码中encrypted_passwordDevise 保留的字段,因此当 devise 无法验证时,检查旧密码:

# user.rb      
def valid_password?(password)
  return false if encrypted_password.blank?
  require 'digest/sha1'
  password_salt = 'my_php_framework_salt'
  Devise.secure_compare(Digest::SHA1.hexdigest(password_salt+password), self.encrypted_password)
end

它允许使用旧密码登录,但不适用于新用户的原始设计密码。我认为这valid_password?方法应该return true用于设计密码。如何解决这个问题?


我相信如果你手动填写'my_php_framework_salt'进入老用户的数据库行然后使用:

self.password_salt代替password_salt会起作用的。

我记得 ruby​​ 返回函数中最后一行的结果。Devise.secure_compare应该返回一个布尔值,这意味着valid_password?也会返回一个布尔值。

简而言之:

require 'digest/sha1'  

# ...

def valid_password?(password)
  return false if encrypted_password.blank?
  Devise.secure_compare(Digest::SHA1.hexdigest(self.password_salt+password), self.encrypted_password)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将密码迁移到 Devise 的相关文章

随机推荐