0

我计划将我的 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) salt: 701260468044000.6918523640121411

现在我们需要更改为

3)密码摘要:666699d998933300.6918d83894e2782e1ddfe28a

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

注意:我没有使用任何身份验证 gem,例如 authlogic 或 devise。我正在使用 bcrypt-ruby 使用普通 rails 身份验证

4

1 回答 1

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)
于 2014-07-03T18:00:24.347 回答