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

Исключение UnauthorizedHttpException

Исключение UnauthorizedHttpException выбрасывается, когда клиент не прошёл аутентификацию и должен авторизоваться повторно. Оно относится к семейству HTTP-исключений и автоматически превращается в ответ со статусом 401. Первым параметром передаётся имя challenge-схемы (например, 'Basic' или 'Bearer'), вторым - текст сообщения, третьим - предыдущее исключение, четвёртым - код ошибки, пятым - массив заголовков ответа.

Синтаксис

new UnauthorizedHttpException(string $challenge, string $message = '', ?Throwable $previous = null, int $code = 0, array $headers = [])

Пример

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

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpKernelExceptionUnauthorizedHttpException; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { throw new UnauthorizedHttpException('Bearer', 'Token is missing'); } } ?>

После запроса Symfony вернёт ответ со статусом 401 и заголовком WWW-Authenticate со значением Bearer:

HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer Token is missing

Пример

Давайте перехватим исключение и получим его статус-код через метод getStatusCode:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpKernelExceptionUnauthorizedHttpException; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { try { throw new UnauthorizedHttpException('Basic', 'abcde'); } catch (UnauthorizedHttpException $e) { $res = $e->getStatusCode(); return new Response((string) $res); } } } ?>

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

401

Пример

Давайте получим текст сообщения через метод getMessage:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpKernelExceptionUnauthorizedHttpException; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { try { throw new UnauthorizedHttpException('Bearer', 'user'); } catch (UnauthorizedHttpException $e) { return new Response($e->getMessage()); } } } ?>

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

"user"

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

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