Php Symfony2登录/注册错误凭据
(对不起我的英语) 我从Symfony 2开始,我正在尝试实现一个登录系统。很明显,这位医生确实很好。 我可以很好地保存一个用户,但我似乎无法连接,我总是一个错误“坏凭据”,而我的密码是正确的 生根Php Symfony2登录/注册错误凭据,php,symfony,login,Php,Symfony,Login,(对不起我的英语) 我从Symfony 2开始,我正在尝试实现一个登录系统。很明显,这位医生确实很好。 我可以很好地保存一个用户,但我似乎无法连接,我总是一个错误“坏凭据”,而我的密码是正确的 生根 user_login: path: /login defaults: { _controller: UserUserBundle:Security:login } user_login_check: path: /login_check 。 控制器中的登
user_login:
path: /login
defaults: { _controller: UserUserBundle:Security:login }
user_login_check:
path: /login_check
。
控制器中的登录功能
public function loginAction(Request $request)
{
// Si le visiteur est déjà identifié, on le redirige vers l'accueil
if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
return $this->redirect($this->generateUrl('tournois_accueil'));
}
$session = $request->getSession();
// On vérifie s'il y a des erreurs d'une précédente soumission du formulaire
if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR))
{
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
}
else
{
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
$session->remove(SecurityContext::AUTHENTICATION_ERROR);
}
return $this->render('UserUserBundle:Default:login.html.twig', array(
'last_email' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
}
存储库
class UserRepository extends EntityRepository implements UserProviderInterface {
public function loadUserByUsername($username)
{
$q = $this
->createQueryBuilder('u')
->where('u.username = :username')
->setParameter('username', $username)
->getQuery();
try {
// La méthode Query::getSingleResult() lance une exception
// s'il n'y a pas d'entrée correspondante aux critères
$user = $q->getSingleResult();
} catch (NoResultException $e) {
throw new UsernameNotFoundException(sprintf('Unable to find an active admin AcmeUserBundle:User object identified by "%s".', $username), 0, $e);
}
return $user;
}
..............
/****************
编辑
****************/
我使用此函数在base中添加用户
public function registrationAction(Request $request)
{
$user = new User();
$form = $this->createForm('user_registration', $user);
$form->handleRequest($request);
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(), $user->getSalt());
$user->setPassword($password);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('user_user_index', array(
)));
}
}
尝试让您的用户也实现“\Serializable”如何将用户保存到数据库?您可以显示它吗?尝试在防火墙的
安全区域部分下设置main\u provider
,如下所示:provider:main\u provider
否,我尝试了,但出现了错误“InvalidConfigurationException:无法识别的选项…”@user2956298查看
public function registrationAction(Request $request)
{
$user = new User();
$form = $this->createForm('user_registration', $user);
$form->handleRequest($request);
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPassword(), $user->getSalt());
$user->setPassword($password);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('user_user_index', array(
)));
}
}