我正在try 从旧数据库迁移大量用户.为此,我使用activerecord导入并try 将所有用户数据直接保存到DB(绕过用户模型).
我的问题是:我需要获取老用户的纯文本密码,对其进行加密,然后直接存储到数据库中.我知道如何使用Desive输入密码,但我想知道是否有办法获得一个哈希密码,我可以直接存储到数据库中.
希望做到:
new_hashed_password = Devise.awesome_encrypting_method(old_user.password)
然后将"新的散列密码"直接存储到数据库中,而无需查看模型.我在Desive里翻找,发现了这个:
def password_digest(password)
::BCrypt::Password.create("#{password}#{self.class.pepper}", :cost => self.class.stretches).to_s
end
@@拉伸默认为10(lib/designe.rb:71),并且不会被我的初始值设定项覆盖
@@pepper默认为nil(lib/devise.rb:148),不被我的初始值设定项覆盖
我以为我可以手动重新创建password_digest(),但我觉得我缺少了Bcrypt的一些基本功能,因为即使设置了password和Stretch,每次生成的哈希值都是不同的.
有什么 idea 吗?谢谢你的帮助!