gpt4 book ai didi

ruby-on-rails - 将密码迁移到 Devise

转载 作者:行者123 更新时间:2023-12-04 06:07:21 25 4
gpt4 key购买 nike

我正在将用户数据库从 PHP 迁移到 Rails。我已经安装了 Devise Gem,现在运行良好。此外,我发现了如何将现有用户的密码迁移到 Rails 的提示我已将旧密码添加到与 Devise 相同的 encrypted_pa​​ssword 字段中,因此当 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? 方法应该返回 true 来设计密码。如何解决这个问题?

最佳答案

我相信如果您手动将 'my_php_framework_salt' 填入旧用户的数据库行,那么就可以使用:

self.password_salt 而不是 password_salt 它会起作用。

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

简而言之:

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

关于ruby-on-rails - 将密码迁移到 Devise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17322911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com