我正在使用Devise作为身份验证方法将PHP站点迁移到Rails。旧站点使用md5(salt +密码)来验证用户,因此我编写了一个自定义Devise加密器:
module Devise
module Encryptors
class Md5 < Base
def self.digest(password, stretches, pepper)
Digest::MD5.hexdigest(password + 'the_salt_value')
end
end
end
end
当我在新网站上使用密码“password”创建新用户时,散列密码与旧网站上的用户匹配,密码为“password”,这很好。但是,password_salt列中的值(我的目的不明确)是不同的,当我迁移数据库时,旧站点上的用户无法使用“password”登录。
处理这个问题的最佳方法是什么?有没有办法让Devise在验证时简单地比较encrypted_password列中的值?