Я получаю эту ошибку «Должен реализовывать UserProviderInterface» при попытке использовать функции входа в symfony. Я ссылаюсь на репозиторий * @ORM \ Entity (repositoryClass = "Login \ LogBundle \ Entity \ Repository \ UserRepository"). У кого-нибудь есть идеи.
сущность
<?php namespace Login\LogBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; /** * @ORM\Table(name="user") * @ORM\Entity(repositoryClass="Login\LogBundle\Entity\Repository\UserRepository") * @ORM\HasLifecycleCallbacks() */ class User implements UserInterface, \Serializable { /** * @var integer */ private $id; /** * @var string */ private $password; /** * @var string */ private $name; /** * @var string */ private $username; /** * @ORM\Column(type="string", length=32) */ private $salt; /** * @ORM\Column(type="string", length=60, unique=true) */ private $email; /** * @ORM\Column(name="is_active", type="boolean") */ private $isActive; /** /** * @OneToMany(targetEntity="userapidetails", mappedBy="user") */ public $userapidetails; public function __construct() { $this->userapidetails = new ArrayCollection(); $this->isActive = true; $this->salt = md5(uniqid(null, true)); } public function getUserapidetails() { return $this->userapidetails; } // public function setUserapidetails($userapidetails) { // $this->userapi=$userapidetails; // return $this; // } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set password * * @param string $password * @return User */ public function setPassword($password) { $this->password = $password; return $this; } /** * Get password * * @return string */ public function getPassword() { return $this->password; } /** * Set name * * @param string $name * @return User */ public function setName($name) { $this->name = $name; return $this; } /** * Get name * * @return string */ public function getName() { return $this->name; } /** * Set username * * @param string $username * @return User */ public function setUsername($username) { $this->username = $username; return $this; } /** * Get username * * @return string */ public function getUsername() { return $this->username; } /** * @var string */ private $isactive; /** * Set email * * @param string $email * @return User */ public function setEmail($email) { $this->email = $email; return $this; } /** * Get email * * @return string */ public function getEmail() { return $this->email; } /** * Set salt * * @param string $salt * @return User */ public function setSalt($salt) { $this->salt = $salt; return $this; } /** * Get salt * * @return string */ public function getSalt() { return $this->salt; } /** * Set isactive * * @param string $isactive * @return User */ public function setIsactive($isactive) { $this->isactive = $isactive; return $this; } /** * Get isactive * * @return string */ public function getIsactive() { return $this->isactive; } /** * @inheritDoc */ public function getRoles() { return array('ROLE_USER'); } /** * @inheritDoc */ public function eraseCredentials() { } /** * @see \Serializable::serialize() */ public function serialize() { return serialize(array( $this->id, $this->username, $this->salt, $this->password, )); } /** * @see \Serializable::unserialize() */ public function unserialize($serialized) { list ( $this->id, $this->username, $this->salt, $this->password, ) = unserialize($serialized); } }
вместилище
// src/Acme/UserBundle/Entity/UserRepository.php namespace Login\LogBundle\Entity; use Doctrine\ORM\EntityRepository; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Doctrine\ORM\NoResultException; class UserRepository extends EntityRepository implements UserProviderInterface { public function loadUserByUsername($username) { $q = $this ->createQueryBuilder('u') ->where('u.username = :username OR u.email = :email') ->setParameter('username', $username) ->setParameter('email', $username) ->getQuery(); try { // The Query::getSingleResult() method throws an exception // if there is no record matching the criteria. $user = $q->getSingleResult(); } catch (NoResultException $e) { $message = sprintf( 'Unable to find an active admin AcmeUserBundle:User object identified by "%s".', $username ); throw new UsernameNotFoundException($message, 0, $e); } return $user; } public function refreshUser(UserInterface $user) { $class = get_class($user); if (!$this->supportsClass($class)) { throw new UnsupportedUserException( sprintf( 'Instances of "%s" are not supported.', $class ) ); } return $this->find($user->getId()); } public function supportsClass($class) { return $this->getEntityName() === $class || is_subclass_of($class, $this->getEntityName()); } }