在我的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);
//...
答案 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();
}
}
别忘了: