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

Метод eraseCredentials

Метод eraseCredentials принадлежит интерфейсу UserInterface и вызывается Symfony автоматически после успешной аутентификации пользователя. Его задача - удалить из объекта пользователя все чувствительные данные, такие как пароль в открытом виде, чтобы они не хранились в сессии. Метод не принимает параметров и не возвращает значения. В современных версиях Symfony (начиная с 6.4) реализация этого метода необязательна и может быть пустой.

Синтаксис

public function eraseCredentials(): void

Пример

Давайте создадим класс пользователя, реализующий UserInterface, и переопределим метод eraseCredentials для очистки поля plainPassword:

<?php namespace App\Entity; use Symfony\Component\Security\Core\User\UserInterface; class User implements UserInterface { private string $username; private array $roles = []; private ?string $plainPassword = null; public function getUserIdentifier(): string { return $this->username; } public function getRoles(): array { return $this->roles; } public function eraseCredentials(): void { $this->plainPassword = null; } } ?>

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

null

Пример

Давайте рассмотрим, как Symfony вызывает этот метод при входе пользователя. Внутри аутентификатора происходит очистка данных автоматически:

<?php namespace App\Security; use App\Entity\User; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator; use Symfony\Component\Security\Http\Authenticator\Passport\Passport; use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge; use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials; class LoginAuthenticator extends AbstractAuthenticator { public function authenticate(Request $request): Passport { $username = $request->request->get('username'); $password = $request->request->get('password'); return new Passport( new UserBadge($username), new PasswordCredentials($password) ); } public function onAuthenticationSuccess( Request $request, TokenInterface $token, string $firewallName ): ?RedirectResponse { $user = $token->getUser(); if ($user instanceof User) { $user->eraseCredentials(); } return new RedirectResponse('/dashboard'); } } ?>

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

Редирект на /dashboard

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

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