如何覆盖symfony密码检查,以便能够检查多种类型的哈希值

时间:2012-03-28 15:21:09

标签: php symfony fosuserbundle

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

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

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(或其规范名称),因此更新部分不可用。

1 个答案:

答案 0 :(得分:1)

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

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