如果你使用一個數據庫來存儲用戶,你可以保存用戶信息,如下圖所示:(從the Symfony security book) Symfony2代碼組織:在保存db之前,應該在哪裏加密密碼的邏輯呢?
$factory = $this->get('security.encoder_factory');
$user = new Acme\UserBundle\Entity\User();
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword('mypassword', $user->getSalt());
$user->setPassword($password);
不過,我想創建可重複使用的用戶表單:
namespace App\Bundle\WebBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('username')
->add('password')
;
}
public function getName()
{
return 'app_bundle_webbundle_usertype';
}
}
和使用形式中的控制器: (從here)
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($task);
$em->flush();
return $this->redirect($this->generateUrl('task_success'));
}
}
你應該在這篇文章的開頭(以及爲了生成鹽的代碼)中顯示你的密碼,以便使它可重複使用並與$ form-> bindRequest()方法兼容,如果您需要用戶註冊表單和用戶個人資料編輯表單等?