Что за ошибка при реализации аутентификации через логин и email на Symfony3? Изучаю symfony
Пытаюсь реализовать symfony.com/doc/current/security/entity_provider.h..
Но при попытки входа в приложение получаю - The Doctrine repository "Doctrine\ORM\EntityRepository" must implement Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface. createQueryBuilder('u'
->where('u.username = :username OR u.email = :email'
->setParameter('username', $username
->setParameter('email', $username
->getQuery(
->getOneOrNullResult()

}//zenaku/AppBundle/Entity/Users.ph
namespace zenaku\AppBundle\Entity
use Doctrine\ORM\Mapping AS ORM
use Symfony\Component\Security\Core\User\UserInterface
use Symfony\Component\Security\Core\User\AdvancedUserInterface
/*
* User

* @ORM\Entity(repositoryClass="zenaku\AppBundle\Entity\Repository\UsersRepository"
* @ORM\Table(name="users", uniqueConstraints={@ORM\UniqueConstraint(name="username_UNIQUE", columns={"username"}), @ORM\UniqueConstraint(name="id_UNIQUE", columns={"id"}), @ORM\UniqueConstraint(name="email_UNIQUE", columns={"email"})}, indexes={@ORM\Index(name="fk_users_privileges_idx", columns={"privileges"})}
* @ORM\Entit
*
class Users implements UserInterface, AdvancedUserInterface, \Serializabl

/*
* @var intege

* @ORM\Column(name="id", type="integer", nullable=false
* @ORM\I
* @ORM\GeneratedValue(strategy="IDENTITY"
*
private $id
/*
* @var strin

* @ORM\Column(name="username", type="string", length=16, nullable=false
*
private $username
//..
}security
encoders
zenaku\AppBundle\Entity\Users
algorithm: bcryp
encode_as_base64: tru
cost: 1
providers
db_hal
entity
class: zenakuAppBundle:User
firewalls
dev
pattern: ^/(_(profiler|wdt)|css|images|js)
security: fals
main
pattern: ^
form_login
login_path: logi
check_path: check_logi
username_parameter: usernam
password_parameter: passwor
provider: db_ha
logout:
anonymous:
switch_user: { role: ROLE_UBERADMIN, parameter: _i_other_user
role_hierarchy
ROLE_ADMIN: ROLE_USE
ROLE_UBERADMIN: ROLE_ADMI
access_control
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY
- { path: ^/admin, roles: ROLE_ADMIN
- { path: ^/, roles: ROLE_USER
В интернете пишут что-то о несовместимости конфигураций в аннотациях/yml/xml. Хотя я использую лишь аннотации. Вот к примеру

21 Авг 2019 в 07:04
179 +1
1
Ответы
1

Ошибка возникает из-за того, что вы указали, что ваш репозиторий UsersRepository реализует интерфейс UserLoaderInterface, но сам интерфейс не был имплементирован в вашем репозитории.

Чтобы исправить эту ошибку, вам нужно добавить метод loadUserByUsername в ваш класс UsersRepository, который будет загружать пользователя по имени пользователя или по email.

Примерно так:

class UsersRepository extends EntityRepository implements UserLoaderInterfac

public function loadUserByUsername($username

return $this->createQueryBuilder('u'
->where('u.username = :username OR u.email = :email'
->setParameter('username', $username
->setParameter('email', $username
->getQuery(
->getOneOrNullResult()

}

После этого ошибка должна исчезнуть, и вы сможете успешно аутентифицироваться через логин и email.

20 Апр в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 581 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир