Symfony 2 - 不使用 bcrypt 验证用户
Symfony 2 - not authenticating user using bcrypt
我在数据库中添加了一个用户。
我使用 bcrypt 加密对他们的密码进行编码:
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(),$user->getSalt());
$postData->setPassword($password);
这一切都很好地保存到数据库中。
在我的用户实体上我的 getSalt() 方法 returns null:
public function getSalt(){
return null;
}
现在,当我尝试验证 symfony 日志时,它告诉我输入了错误的凭据。
然而...
如果我使用此站点使用 bcrypt 加密我的密码:
http://bcrypthashgenerator.apphb.com/
然后手动将结果输入数据库,并尝试使用我用上面的结果更新的用户密码进行身份验证 link,
效果很好。
所以有些东西我没有设置,当我加密密码时 symfony 无法验证它。
我试过在 getSalt() 上设置盐,将其设置为空字符串。
编辑
我正在使用 php 5.5.9
我也尝试过使用 BCryptPasswordEncoder($cost) class,
将 __construct 的成本设置为与我的 security.yml 相同
它仍然没有验证。
编辑
我也尝试按照建议通过作曲家安装此 class here.
编辑
如果我使用php方法:
password_hash('testertester',PASSWORD_BCRYPT,array('cost'=>13));
它完美地验证了。
因此,它需要在 Symfony 中做更深入的工作。我会继续挖掘。
仍然没有运气:-/
到目前为止,我正在网上搜索无济于事。
如有任何帮助,我们将不胜感激。
广告
我传递的是现有实体对象而不是提交的数据对象!!
$postData = $form->getdata();
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(),$user->getSalt());
$postData->setPassword($password);
注意这里的这一行:
$user->getPassword() 需要是 $postData->getPassword()
$password = $encoder->encodePassword($postData->getPassword(),$user->getSalt());
边学边学啊!
我在数据库中添加了一个用户。
我使用 bcrypt 加密对他们的密码进行编码:
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(),$user->getSalt());
$postData->setPassword($password);
这一切都很好地保存到数据库中。
在我的用户实体上我的 getSalt() 方法 returns null:
public function getSalt(){
return null;
}
现在,当我尝试验证 symfony 日志时,它告诉我输入了错误的凭据。
然而...
如果我使用此站点使用 bcrypt 加密我的密码:
http://bcrypthashgenerator.apphb.com/
然后手动将结果输入数据库,并尝试使用我用上面的结果更新的用户密码进行身份验证 link, 效果很好。
所以有些东西我没有设置,当我加密密码时 symfony 无法验证它。
我试过在 getSalt() 上设置盐,将其设置为空字符串。
编辑 我正在使用 php 5.5.9
我也尝试过使用 BCryptPasswordEncoder($cost) class, 将 __construct 的成本设置为与我的 security.yml 相同 它仍然没有验证。
编辑 我也尝试按照建议通过作曲家安装此 class here.
编辑
如果我使用php方法:
password_hash('testertester',PASSWORD_BCRYPT,array('cost'=>13));
它完美地验证了。
因此,它需要在 Symfony 中做更深入的工作。我会继续挖掘。
仍然没有运气:-/
到目前为止,我正在网上搜索无济于事。
如有任何帮助,我们将不胜感激。
广告
我传递的是现有实体对象而不是提交的数据对象!!
$postData = $form->getdata();
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(),$user->getSalt());
$postData->setPassword($password);
注意这里的这一行:
$user->getPassword() 需要是 $postData->getPassword()
$password = $encoder->encodePassword($postData->getPassword(),$user->getSalt());
边学边学啊!