我们将用户存储在数据库中,密码存储为SHA512散列字符串。格式为:$6$rounds=5000$[salt]$[hash]
我们使用一个旧的,自编写的php方法,crypt()
。
现在我想用symfony 3.3.1编写一个新的应用程序,并在security.yml中配置bcrypt算法:
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
登录工作正常。我还尝试保存一个新用户并对密码进行编码,如下所示:
public function register(Request $request, UserPasswordEncoderInterface $encoder)
{
$user = User();
$form = $this->get('form.factory')->createNamed('register', UserRegistrationForm::class, $user, [
'action' => $this->generateUrl('register')
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$password = $encoder->encodePassword($user, $user->getPassword());
$user->setPassword($password);
...
}
但密码未按所需格式编码,我无法以新创建的用户身份登录。有关如何配置symfony3以$6$rounds=5000...
格式编码密码的任何提示?或者我是否必须为此编写自定义密码编码器?