bcrypt-ruby从hashed_pa​​ssword字段升级密码,salt到password_digest字段

时间:2014-07-03 12:37:50

标签: ruby ruby-on-rails-4 bcrypt-ruby

我打算将我的rails应用程序从2.3.5升级到4.1。

在旧版本的rails中,bcrypt-ruby有两个字段(hashed_pa​​ssword,salt)。

现在在最新版本的rails中,我们只有一个名为password_digest的字段。

现在我需要将现有用户密码从hashed_pa​​ssword,salt升级到password_digest字段。

所以我计划有任何流程或算法来迁移现有的用户密码。

示例:

1)hashed_pa​​ssword:d83894e27821bd43eeb7a0001037329e1ddfe28a 2)盐:701260468044000.6918523640121411

现在我们需要改为

3)password_digest:666699d998933300.6918d83894e2782e1ddfe28a

现在,如果用户使用他的密码登录,则应该允许登录。

注意:我没有使用任何身份验证宝石,如authlogic或devise。我正在使用bcrypt-ruby

进行普通的rails身份验证

1 个答案:

答案 0 :(得分:0)

您可以直接使用BCrypt升级现有的pass_hash和salt:

def migrate_password(hashed_password, salt)
  Password.new(BCrypt::Engine.hash_secret(hashed_password,salt))
end

您可以使用它:

salt = 701260468044000.6918523640121411
secret = "d83894e27821bd43eeb7a0001037329e1ddfe28a"
password_digest = migrate_password(secret, salt)