在为网站设置“更改密码”功能时,我有一个次要的密码输入(需要再次输入密码才能更改密码)。
我需要检查用户当前的密码(使用Bcrypt哈希)是否与已输入的密码相符。
在我的控制器操作中:
由于Bcrypt将盐合并到密码摘要中,因此我没有在任何地方保存它。
如何在Symfony 3中检查输入的明文密码是否与存储的Bcrypt摘要匹配?
我没有使用
我需要检查用户当前的密码(使用Bcrypt哈希)是否与已输入的密码相符。
在我的控制器操作中:
$currentPassword = $request->request->get('password');
$encoder = $this->container->get('security.password_encoder');
$encodedPassword = $encoder->encodePassword($user, $currentPassword);
if($encodedPassword == $user->getPassword()) { // these don't ever match.
// ...
}
encodePassword(...)
函数生成输入密码的摘要,但它与保存的密码(明文相同)不同,因此我认为应用了不同的盐,从而导致不匹配。由于Bcrypt将盐合并到密码摘要中,因此我没有在任何地方保存它。
如何在Symfony 3中检查输入的明文密码是否与存储的Bcrypt摘要匹配?
我没有使用
FOSUserBundle
。