我有一个旧的用户数据库,其中包含以我不喜欢的方式散列的密码。 我希望这些哈希值在他们登录时更新为新的哈希表单(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(或其规范名称),因此更新部分不可用。
答案 0 :(得分:1)
如果它可以帮助遇到此问题的人,这是我使用的解决方案。 将密码存储在数据库中的旧方法不使用盐。所以我更新了这个列以包含用户的id。
然后使用salt参数创建我自己的安全编码器很容易更新用户的密码哈希值。