用新创建的用户登录遇到问题
问题描述:
我创建了一个CRUD,允许我在后台创建用户,社团和学校。用新创建的用户登录遇到问题
但是,由于未知原因,我无法用创建的用户使用我给他的密码登录。
这里是我的控制器(在其中创建用户的部分)
/**
* Creates a new User entity.
*
* @Route("/new", name="user_new")
* @Method({"GET", "POST"})
*/
public function newAction(Request $request)
{
$user = new User();
$form = $this->createForm('UserBundle\Form\UserType', $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$password = $this->get('security.password_encoder')->encodePassword($user, $user->getPassword());
$user->setPassword($password);
$em->persist($user);
$em->flush();
return $this->redirectToRoute('user_show', array('id' => $user->getId()));
}
return $this->render('user/new.html.twig', array(
'user' => $user,
'form' => $form->createView(),
));
}
注册一个新用户后,当我在fos_user表检查它,我可以看到密码已被加密。但是,如果我尝试使用我使用的密码登录,我只是从登录表单中获得“不良凭据”。
我不明白为什么。 如果您需要查看另一个文件请告诉我,我将更新我的问题
任何想法?
预先感谢您
答
正确的方式FOSUserBundle创建用户并设置密码如下:
密码保存在数据库加密。为了使暴力更难,数据库包含一个名为salt的额外字段。您不会将其存储在您的代码中,这就是为什么稍后无法检查密码的原因。但实际上,您不必加密密码并将其存储在数据库中。用户模型包含一个特殊的方法setPlainPassword,它用于加密密码,在正确的值中填充数据库中的salt和password两个字段。
[Symfony2 $ user-> setPassword()将密码更新为纯文本\ [DataFixtures + FOSUserBundle \]](http://*.com/questions/9183368/symfony2-user-setpassword-updates-password -as-plain-text-datafixtures-fos) – CountZero
我不想填充我的数据库,我希望我的管理员能够用简单的注册表创建用户...我尝试了食谱中的示例,但它仍然失败;. – Jaeger
好吧,我会在这里回答,然后 – CountZero