2

我有一个旧的用户数据库,其中包含以我不喜欢的方式散列的密码。我希望在他们登录时将这些哈希更新为新的哈希形式(bcrypt)。

我使用 FOSUserBundle 来管理用户和Elnur 的 bcrypt 包作为安全编码器。有没有一种简单的方法可以插入密码检查机制来添加这种算法:

if passwordHash is using old format
  oldFormatHash := hash userGivenPassword in the old way
  if oldFormatHash == passwordHash
     login ok
     update password in database with new hash format
  else
     login ko
else
  use default 

我考虑过扩展当前的安全编码器,但该isPasswordValid方法没有要检查的帐户 ID(或其规范名称),因此更新部分不可用。

4

1 回答 1

1

如果它可以帮助遇到这个问题的人,这是我使用的解决方案。在数据库中存储密码的旧方法不使用盐。所以我更新了这个列以包含用户的 ID。

然后很容易使用 salt 参数创建我自己的安全编码器来更新用户的密码哈希。

于 2012-03-28T16:33:23.380 回答