2017-03-03 4 views
0

In meiner UserProvider Klasse verarbeitet werden die loadUserByUsername()-Methode verwendet die folgende Abfrage, die eine AuthenticationServiceException mit der Meldung wirft: Authentifizierungsanforderung aufgrund eines Systemproblems nicht verarbeitet werden konnten. Was sollte das Problem sein? Wie andere bereits erwähnten, habe ich den Cache geleert und das Datenbankschema nach der Lehre aktualisiert.Symfony: Authentifizierungsanforderung kann nicht

Die Abfrage:

//... 
$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

Hat 'User' Klasse-Schnittstelle implementieren' UserInterface'? –

Antwort

0

Wo Sie diesen Query Builder festgelegt haben? in einer Repository-Klasse? Wenn Sie diesen Code innerhalb einer Repository-Klasse festlegen, ist es nicht erforderlich, den Entity Manager zu verwenden. Oder haben Sie vielleicht ein paar Gründe dafür? Wenn nicht innerhalb Benutzerrepository Klasse bewegen Sie Ihren Code wie folgt:

// 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(); 
    } 
} 

Vergessen Sie nicht:

Werfen Sie einen Blick: Custom Query to load the user

Verwandte Themen