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

Интерфейс UserInterface

Интерфейс UserInterface задаёт контракт для класса пользователя в Symfony. Любой класс, который представляет пользователя приложения, должен реализовывать этот интерфейс. Он требует три метода: getUserIdentifier, getRoles и eraseCredentials. Метод getUserIdentifier возвращает уникальный идентификатор пользователя, метод getRoles - массив ролей, а метод eraseCredentials удаляет чувствительные данные после аутентификации.

Синтаксис

<?php namespace AppEntity; use SymfonyComponentSecurityCoreUserUserInterface; class User implements UserInterface { public function getUserIdentifier(): string { return $this->email; } public function getRoles(): array { return $this->roles; } public function eraseCredentials(): void { } } ?>

Пример

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

<?php namespace AppEntity; use SymfonyComponentSecurityCoreUserUserInterface; class User implements UserInterface { private string $email = 'user'; private array $roles = ['ROLE_USER']; public function getUserIdentifier(): string { return $this->email; } public function getRoles(): array { return $this->roles; } public function eraseCredentials(): void { } } ?>

Теперь проверим работу методов через контроллер:

<?php namespace AppController; use AppEntityUser; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class UserController extends AbstractController { #[Route('/user', name: 'user_show')] public function show(): Response { $user = new User(); echo $user->getUserIdentifier(); echo '<br>'; print_r($user->getRoles()); return new Response(); } } ?>

Результат выполнения кода:

user <br> Array ( [0] => ROLE_USER )

Пример

Давайте добавим несколько ролей пользователю:

<?php namespace AppEntity; use SymfonyComponentSecurityCoreUserUserInterface; class User implements UserInterface { private string $email = 'abcde'; private array $roles = ['ROLE_USER', 'ROLE_ADMIN']; public function getUserIdentifier(): string { return $this->email; } public function getRoles(): array { return $this->roles; } public function eraseCredentials(): void { } } ?>

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

["ROLE_USER", "ROLE_ADMIN"]

Пример

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

<?php namespace AppEntity; use SymfonyComponentSecurityCoreUserUserInterface; class User implements UserInterface { private string $email = 'abcde'; private array $roles = ['ROLE_USER']; private ?string $plainPassword = 'hello'; public function getUserIdentifier(): string { return $this->email; } public function getRoles(): array { return $this->roles; } public function eraseCredentials(): void { $this->plainPassword = null; } public function getPlainPassword(): ?string { return $this->plainPassword; } } ?>

Результат выполнения кода после вызова eraseCredentials:

null

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

  • метод getUserIdentifier,
    который возвращает идентификатор пользователя
  • метод getRoles,
    который возвращает роли пользователя
  • метод eraseCredentials,
    который очищает чувствительные данные
  • интерфейс PasswordAuthenticatedUserInterface,
    который добавляет работу с паролем
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить