Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道设计:Don';验证时不要检查密码_Ruby On Rails_Ruby On Rails 3_Passwords_Devise_Md5 - Fatal编程技术网

Ruby on rails 轨道设计:Don';验证时不要检查密码

Ruby on rails 轨道设计:Don';验证时不要检查密码,ruby-on-rails,ruby-on-rails-3,passwords,devise,md5,Ruby On Rails,Ruby On Rails 3,Passwords,Devise,Md5,我正在使用Desive作为身份验证方法将一个PHP站点迁移到Rails上。旧站点使用md5(salt+密码)对用户进行身份验证,因此我编写了一个定制的Desive encryptor: module Devise module Encryptors class Md5 < Base def self.digest(password, stretches, pepper) Digest::MD5.hexdigest(password + 'the_sa

我正在使用Desive作为身份验证方法将一个PHP站点迁移到Rails上。旧站点使用md5(salt+密码)对用户进行身份验证,因此我编写了一个定制的Desive encryptor:

module Devise
  module Encryptors
    class Md5 < Base
      def self.digest(password, stretches, pepper)
        Digest::MD5.hexdigest(password + 'the_salt_value')
      end
    end
  end
end
模块设计
模块加密机
Md5类<基本类
def自我摘要(密码、拉伸、胡椒)
摘要::MD5.hexdigest(密码+the_salt_value')
终止
终止
终止
终止
当我使用密码“password”在新站点上创建新用户时,哈希密码将旧站点上的用户与密码“password”匹配,这很好。但是,password_salt列中的值(我不清楚它的用途)是不同的,当我迁移数据库时,旧站点上的用户不能使用“password”登录


处理这个问题的最好办法是什么?有没有一种方法可以让Deviate在进行身份验证时简单地比较加密密码列中的值?

这里有一些方法确实有效,但可能不是最好的解决方案:
def valid\u password?(password){Deviate::Encryptors::Md5.digest(password,nil,nil)==self.encrypted\u password,除非加密密码为空?}(在user.rb中)
Salt在密码加密中非常重要。你应该看一看。另外,尝试将用户从旧表迁移到新用户(设计)表。