РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
615 of 1361 menu

Класс UserProvider

Класс UserProvider - это интерфейс из секции passport, который реализует загрузку пользователя по идентификатору и обновление его данных. Используется аутентификатором для получения объекта пользователя во время входа в систему. Основные методы: loadUserByIdentifier, refreshUser и supportsClass.

Синтаксис

<?php namespace Symfony\Component\Security\Core\User; interface UserProviderInterface { public function loadUserByIdentifier(string $identifier): UserInterface; public function refreshUser(UserInterface $user): UserInterface; public function supportsClass(string $class): bool; } ?>

Пример

Давайте создадим простой провайдер пользователей, который возвращает объект User по идентификатору 'abcde':

<?php namespace App\Security; use Symfony\Component\Security\Core\Exception\UserNotFoundException; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; class UserProvider implements UserProviderInterface { public function loadUserByIdentifier(string $identifier): UserInterface { if ($identifier !== 'abcde') { throw new UserNotFoundException('User not found'); } return new User($identifier); } public function refreshUser(UserInterface $user): UserInterface { return $user; } public function supportsClass(string $class): bool { return User::class === $class; } } ?>

Результат выполнения метода loadUserByIdentifier для 'abcde':

App\Security\User {#1 identifier: "abcde" }

Пример

Давайте используем провайдер внутри аутентификатора для загрузки пользователя:

<?php namespace App\Security; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Http\Authenticator\Passport\Passport; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge; class FormAuthenticator { public function __construct( private UserProviderInterface $userProvider ) { } public function authenticate(Request $request): Passport { $identifier = $request->request->get('username', ''); $user = $this->userProvider->loadUserByIdentifier($identifier); return new Passport( new UserBadge($user->getUserIdentifier()), $user ); } } ?>

Результат выполнения кода для запроса с 'username' = 'abcde':

"user authenticated"

Смотрите также

  • метод loadUserByIdentifier,
    который загружает пользователя по идентификатору
  • метод refreshUser,
    который обновляет данные пользователя
  • метод supportsClass,
    который проверяет поддержку класса пользователя
  • класс UserBadge,
    который хранит идентификатор пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить