Symfony 加密密码
Symfony Encrypt Password
我正在使用带有 FormBuilder 的 symfony 3。
现在我创建注册表..
我遇到的一个问题是使用 encode 来加密密码
今天我用的是这样的:
public function SignupAction(Request $request){
$form = $this->createForm(RegisterType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()){
$em = $this->getDoctrine()->getManager();
$em->persist($form->getData());
$em->flush();
return $this->redirectToRoute('homepage');
}
return $this->render('AppBundle:Site:Register.html.twig', [
'form' => $form->createView()
]);
}
每个文件都输入到数据库中。
但是密码没有加密。
如何加密密码?
谢谢
您应该遵循文档:How to implement a registration form.
基本上,您的 RegisterType
应该有一个默认的 class 和实现 UserInterface
的 User
并且当您保存表单时密码应该被加密。
在 symfony 2.7 中有一个 class 名为 MessageDigestPasswordEncoder。
所以你可以获得一个编码器:
$encoder = new \Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder($algorithm,$encode_as_base64, $iterations);
您可以使用 security.yml 的配置填充 $algorithm、$encode_as_base64 和 $iterations 的值,用 Yaml::parse 解析 security.yml 的内容。或者简单地使用那里定义的相同值。
获得编码器后,调用方法 encodePassword
$password = $encoder->encodePassword($password, $salt)
那 return 与您的编码器配置相同的编码密码。请注意,您必须提供一个 $salt 值。您可以按照建议使用 random_bytes。
我正在使用带有 FormBuilder 的 symfony 3。
现在我创建注册表..
我遇到的一个问题是使用 encode 来加密密码
今天我用的是这样的:
public function SignupAction(Request $request){
$form = $this->createForm(RegisterType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()){
$em = $this->getDoctrine()->getManager();
$em->persist($form->getData());
$em->flush();
return $this->redirectToRoute('homepage');
}
return $this->render('AppBundle:Site:Register.html.twig', [
'form' => $form->createView()
]);
}
每个文件都输入到数据库中。 但是密码没有加密。
如何加密密码?
谢谢
您应该遵循文档:How to implement a registration form.
基本上,您的 RegisterType
应该有一个默认的 class 和实现 UserInterface
的 User
并且当您保存表单时密码应该被加密。
在 symfony 2.7 中有一个 class 名为 MessageDigestPasswordEncoder。
所以你可以获得一个编码器:
$encoder = new \Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder($algorithm,$encode_as_base64, $iterations);
您可以使用 security.yml 的配置填充 $algorithm、$encode_as_base64 和 $iterations 的值,用 Yaml::parse 解析 security.yml 的内容。或者简单地使用那里定义的相同值。
获得编码器后,调用方法 encodePassword
$password = $encoder->encodePassword($password, $salt)
那 return 与您的编码器配置相同的编码密码。请注意,您必须提供一个 $salt 值。您可以按照建议使用 random_bytes。