升级如何设计1 crypto_password s设计4 / rails 5

时间:2018-07-10 01:40:10

标签: devise

如何创建Rails 3 / Devise 1的“ encrypted_pa​​ssword”字段 使用当前的5.2 / devise 4

我正在移植/重写Rails 3应用程序。作为升级的一部分, 我放弃了MySQL使用Postgres。

在复制表之后,rails应用程序将 开始,旧用户无法登录。我知道我的旧密码是“秘密” 和

> User.find(MY_ID).valid_password? "secret"
=> false

在rails 5应用程序中返回false。我希望它是“真实的”

更多背景信息:

# old app
bundle exec rails --version
Rails 3.2.22.5
cat Gemfile.lock | grep devise
    devise (1.4.2)

# new app
bundle exec rails --version
Rails 5.2.0
cat  Gemfile.lock  | grep devise
    devise (4.4.3)  

我的旧密码哈希是

$2a$10$nredactedjcACEJ9fvGS7.redacted/redactedm6ulMcYXV5kLLe

在新应用中执行此操作会产生以下哈希值:

> user = User.find(MY_ID)
> user.password = "secret"
> user.password_confirmation = "secret"
> user.save
> user = User.find(MY_ID)
> user.valid_password? "secret"
=> true
> user.encrypted_password
=> "$2a$11$BowgWsMftfhE/Q4wMbVkheZGg14AxmF2GygVYvbfnH.redactedXC"

0 个答案:

没有答案