Symfony:无法处理身份验证请求

时间:2017-03-03 07:35:35

标签: php doctrine symfony

在我的UserProvider课程中,loadUserByUsername()方法使用下面的查询,该查询会抛出AuthenticationServiceException并显示以下消息: 由于a无法处理身份验证请求系统问题。 应该是什么问题?正如其他人提到的,我清除了缓存并通过原则更新了数据库模式。

查询:

//...
$user = $this->entityManager->getRepository(User::class)->createQueryBuilder('u')
            ->where("u.userName = :username OR u.email = :email")
            ->setParameter('username', $username)
            ->setParameter('email', $username)
            ->getQuery()
            ->getOneOrNullResult(AbstractQuery::HYDRATE_OBJECT);
//...

1 个答案:

答案 0 :(得分:0)

您在哪里设置此查询构建器?在存储库类中?如果在存储库类中设置此代码,则不必使用实体管理器。或许你有一些理由这样做。如果不将代码移动到用户存储库类中,如下所示:

// src/AppBundle/Repository/UserRepository.php
namespace AppBundle\Repository;

use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
use Doctrine\ORM\EntityRepository;

class UserRepository extends EntityRepository implements UserLoaderInterface
{
    public function loadUserByUsername($username)
    {
        return $this->createQueryBuilder('u')
            ->where('u.username = :username OR u.email = :email')
            ->setParameter('username', $username)
            ->setParameter('email', $username)
            ->getQuery()
            ->getOneOrNullResult();
    }
}

别忘了:

看看:Custom Query to load the user