我在控制器中有一个方法可以在数据库中添加用户:
// Ajouter
public function ajouterAction()
{
$user = new User() ; // créer l'entité
$user->setUsername('test2');
$user->setPassword('testpass');
$user->setSalt('saltpass');
$user->setRoles(array('ROLE_ADMIN', 'ROLE_USER'));
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
return $this->redirect( $this->generateUrl('store_produit_index'));
}
用户表:
id | username | pasword | salt | roles
---------------------------------------
27 | test2 | testpass | saltpass | a:2:{i:0;s:10:"ROLE_ADMIN";i:1;s:9:"ROLE_USER";}
-----------------------------------------------------------------------------------
30 | winzou | winzou | wizou | a:0:{}
--------------------------------------------------------------------------------------
例如,当我使用用户名winzou
连接时,它可以正常工作,但当我使用用户名test2
连接时,表单会返回错误:Bad credentials
答案 0 :(得分:0)
保存时,您的密码未加密,应该是。当您登录时,symfony正在加密用户输入的密码并在数据库中查找加密版本。
这可能会有所帮助:http://symfony.com/doc/current/cookbook/doctrine/registration_form.html
答案 1 :(得分:0)
我已经在'user'表中手动清除了'salt'字段,用于加密密码,现在工作正常!但Symfony2是否自动包含此字段是为了加密密码? “salt”这个词是指定值并在Symfony2中保留吗?