Ruby on rails 轨道设计:Don';验证时不要检查密码
我正在使用Desive作为身份验证方法将一个PHP站点迁移到Rails上。旧站点使用md5(salt+密码)对用户进行身份验证,因此我编写了一个定制的Desive encryptor: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
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在密码加密中非常重要。你应该看一看。另外,尝试将用户从旧表迁移到新用户(设计)表。