如何创建Rails 3 / Devise 1的“ encrypted_password”字段 使用当前的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"