Что за ошибка при реализации аутентификации через логин и email на Symfony3? Изучаю symfony3
Пытаюсь реализовать 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();
}
}

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

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

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

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

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

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

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир