我正在使用 Symfony 3.4 和 FOSUserBundle。我创建了一个表单来创建新用户,它运行良好,但密码以明文形式存储在数据库中。
当我使用命令“fos:user:create”时,我没有问题。这是我的 security.yml 配置:
security:
encoders:
MyCompany\PimCoreBundle\Entity\User: bcrypt
-> 下面是我的用户创建表单:
$user = new User();
$formBuilder = $this->get('form.factory')->createBuilder(FormType::class, $user)
->add('username', TextType::class)
->add('firstname', TextType::class)
->add('lastname', TextType::class)
->add('email', TextType::class)
->add('password', PasswordType::class)
->add('enabled', CheckboxType::class, array('required' => false))
->add('save', SubmitType::class)
->getForm();
if ($request->isMethod('POST'))
{
$formBuilder->handleRequest($request);
if ($formBuilder->isValid())
{
// HERE (I GUESS) :
// I have to get password with $user->getPassword, encode it
// and then save it within $user->setPassword() ?
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
return $this->redirectToRoute('route_confirm_user_added');
}
}
我不明白我是否必须对表单中的密码以及要使用的类进行编码。谢谢您的帮助 !