【问题标题】:Migrating passwords to Devise将密码迁移到设计
【发布时间】:2013-06-26 14:27:17
【问题描述】:

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

# 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 来设计密码。如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    我相信如果您手动将'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
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 2013-07-26
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 2012-01-01
      相关资源
      最近更新 更多