Бывает да. Бывает нет. Я не понимаю вопрос
Добрый день, Может кто сталкивался, встроенный EntityUserProvider не хочет использовать мой способ загрузки пользователей Делал по мануалу https://symfony.com/doc/5.4/security/user_providers.html Symfony 5.4 В логе запросов к БД всё равно вижу, что запросы включают в себя все поля энтити User, хотя я указал выборку только этих полей: array $fetchFields = ['id', 'uuid', 'login', 'roles', 'password', 'email', 'created_at'] Конфигурация: security: providers: app_user_provider: entity: class: App\Entity\User firewalls: client: lazy: true provider: app_user_provider App\Entity\User: <?php namespace App\Entity; use ...; #[ORM\Entity(repositoryClass: \App\Repository\UserRepository::class)] class User implements UserInterface, PasswordAuthenticatedUserInterface { .... } App\Repository\UserRepository: <?php namespace App\Repository; use App\Entity\User; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface; class UserRepository extends ServiceEntityRepository implements UserLoaderInterface { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, User::class); } public function loadUserByIdentifier(string $identifier, array $fetchFields = ['id', 'uuid', 'login', 'roles', 'password', 'email', 'created_at']): User|null { $fetchFields = array_map(static fn($value) => sprintf('"u"."%s"', $value), $fetchFields); $sqlColumns = join(', ', $fetchFields); return $this ->_em ->createNativeQuery( sql: <<<TEXT SELECT {$sqlColumns} FROM "users" AS "u" WHERE "u"."login" = :login TEXT, rsm: makeDoctrineRsm(User::class, $fetchFields) ) ->setParameter(':login', $identifier) ->getOneOrNullResult(); } public function loadUserByUsername(string $username, array $fetchFields = ['id', 'uuid', 'login', 'roles', 'password', 'email', 'created_at']): User|null { return $this->loadUserByIdentifier($username, $fetchFields); } }
Обсуждают сегодня