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

Исключение LockedException

Исключение LockedException наследуется от AccountStatusException и реализует AuthenticationException. Оно выбрасывается компонентом Security при попытке аутентификации пользователя, чья учётная запись помечена как заблокированная. Первым параметром конструктора передаётся сообщение об ошибке, вторым - объект пользователя UserInterface, третьим - код исключения.

Синтаксис

new LockedException(string $message = '', ?UserInterface $user = null, int $code = 0, ?Throwable $previous = null)

Пример

Давайте выбросим исключение LockedException при проверке статуса пользователя:

<?php namespace AppSecurity; use AppEntityUser; use SymfonyComponentSecurityCoreExceptionLockedException; use SymfonyComponentSecurityCoreUserUserCheckerInterface; use SymfonyComponentSecurityCoreUserUserInterface; class UserChecker implements UserCheckerInterface { public function checkPreAuth(UserInterface $user): void { if (!$user instanceof User) { return; } if ($user->isLocked()) { throw new LockedException('User account is locked.'); } } public function checkPostAuth(UserInterface $user): void { } } ?>

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

"User account is locked."

Пример

Давайте перехватим исключение и получим объект пользователя через метод getUser:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentSecurityCoreExceptionLockedException; use SymfonyComponentRoutingAttributeRoute; class SecurityController extends AbstractController { #[Route('/login', name: 'app_login')] public function login(): Response { try { throw new LockedException('Account locked.'); } catch (LockedException $e) { $user = $e->getUser(); $message = $e->getMessage(); return new Response($message); } } } ?>

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

Account locked.

Пример

Давайте обработаем исключение в слушателе событий AuthenticationFailureEvent:

<?php namespace AppEventListener; use SymfonyComponentSecurityCoreEventAuthenticationFailureEvent; use SymfonyComponentSecurityCoreExceptionLockedException; class LoginFailureListener { public function onAuthenticationFailure(AuthenticationFailureEvent $event): void { $exception = $event->getAuthenticationException(); if ($exception instanceof LockedException) { $user = $exception->getUser(); $message = $exception->getMessage(); echo $message; } } } ?>

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

"User account is locked."

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

  • исключение DisabledException,
    которое выбрасывается при отключённой учётной записи
  • исключение AccountExpiredException,
    которое выбрасывается при истёкшей учётной записи
  • исключение AuthenticationException,
    которое является базовым для ошибок аутентификации
  • исключение CustomUserMessageAuthenticationException,
    которое позволяет задать своё сообщение пользователю
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить