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

CustomUserMessageAuthenticationException

Исключение CustomUserMessageAuthenticationException используется в процессе аутентификации для того, чтобы прервать вход и показать пользователю своё собственное сообщение об ошибке. Оно наследуется от AuthenticationException и первым параметром принимает текст сообщения, который будет выведен в форме входа. Вторым параметром можно передать массив дополнительных данных для сообщения.

Синтаксис

new CustomUserMessageAuthenticationException( string $message = '', array $messageData = [], int $code = 0, Throwable $previous = null )

Пример

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

<?php namespace AppSecurity; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentSecurityCoreExceptionCustomUserMessageAuthenticationException; use SymfonyComponentSecurityHttpAuthenticatorAuthenticatorInterface; use SymfonyComponentSecurityHttpAuthenticatorPassport; use SymfonyComponentSecurityHttpAuthenticatorSelfValidatingPassport; use SymfonyComponentSecurityHttpAuthenticatorUserBadge; class UserAuthenticator implements AuthenticatorInterface { public function authenticate(Request $request): Passport { $apiToken = $request->headers->get('X-AUTH-TOKEN'); if (null === $apiToken) { throw new CustomUserMessageAuthenticationException( 'Token not found' ); } return new SelfValidatingPassport( new UserBadge($apiToken) ); } } ?>

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

"Token not found"

Пример

Давайте передадим массив данных в сообщение и подставим их через плейсхолдеры:

<?php namespace AppSecurity; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentSecurityCoreExceptionCustomUserMessageAuthenticationException; use SymfonyComponentSecurityHttpAuthenticatorAuthenticatorInterface; use SymfonyComponentSecurityHttpAuthenticatorPassport; use SymfonyComponentSecurityHttpAuthenticatorSelfValidatingPassport; use SymfonyComponentSecurityHttpAuthenticatorUserBadge; class UserAuthenticator implements AuthenticatorInterface { public function authenticate(Request $request): Passport { $login = $request->request->get('login'); if ('user' !== $login) { throw new CustomUserMessageAuthenticationException( 'User {{ login }} was not found', ['{{ login }}' => $login] ); } return new SelfValidatingPassport( new UserBadge($login) ); } } ?>

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

"User abcde was not found"

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

  • исключение AuthenticationException,
    базовый класс ошибок аутентификации
  • исключение AccessDeniedException,
    которое выбрасывается при отказе в доступе
  • исключение HttpException,
    базовый класс HTTP-исключений Symfony
  • метод getMessage,
    который возвращает текст сообщения исключения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить