我有一个旧网站,我使用Symfony3和FOSUserBundle进行了重新设计,并尝试计算如何映射数据库的后勤工作,而不必为所有用户造成问题。
' old'网站在存储之前对密码进行哈希处理:
sha1("$salt1$pass$salt2")
' new' site(使用FOSUserBundle)在bundle中的某个地方使用它的Bcrypt默认方法。
以下是" Bcrypt"的正确方法。会员在登录时成为明文密码吗?
使用附加参数Bcrypted
临时扩展 Member 实体:
use FOS\UserBundle\Model\User as BaseUser;
class Member extends BaseUser
{
/* ... */
protected $Bcrypted=false;
}
然后,一旦会员使用他们通常的(sha1()
)密码登录,他们就会正常登录,但有一个功能,如下面的运行 - 不幸的是我无法看到在哪里/如何/如果这个需要使用FOSUserBundle完成:
public function updatePassword($member) {
if Bcrypted==false then {
/* ... Use whatever FOSUserBundle's "Change Password" function is to rehash the password in the database */
$member->setBcrypted('true');
}
}
然后我可以关注数据库,如果/当所有用户最终都登录并在转换的数据库中使用了密码哈希,那么我可以删除该函数和$Bcrypted
参数