Php Symfony2登录/注册错误凭据

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 。 控制器中的登

(对不起我的英语)

我从Symfony 2开始,我正在尝试实现一个登录系统。很明显,这位医生确实很好。 我可以很好地保存一个用户,但我似乎无法连接,我总是一个错误“坏凭据”,而我的密码是正确的

生根

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(

        )));
    }

}