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

Статус HTTP_401_UNAUTHORIZED

Константа HTTP_401_UNAUTHORIZED из модуля fastapi.status равна числу 401 и имеет текстовое описание 'Unauthorized'. Она применяется в параметре status_code декораторов маршрутов, а также в исключении HTTPException, когда нужно сообщить клиенту об отсутствии или недействительности данных аутентификации. Обычно статус возвращают, когда клиент не передал заголовок Authorization, передал просроченный токен или указал неверные учётные данные. В отличие от статуса 403, который означает, что клиент известен, но не имеет прав, статус 401 означает, что клиент ещё не аутентифицирован.

Синтаксис

from fastapi import status status.HTTP_401_UNAUTHORIZED

Пример

Давайте вернём статус HTTP_401_UNAUTHORIZED через параметр status_code декоратора get:

from fastapi import FastAPI, status app = FastAPI() @app.get('/protected', status_code=status.HTTP_401_UNAUTHORIZED) def protected(): return {'detail': 'Unauthorized'}

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

{"detail": "Unauthorized"}

Пример

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

from fastapi import FastAPI, Header, HTTPException, status app = FastAPI() @app.get('/user') def user(authorization: str = Header(default=None)): if authorization is None: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail='Not authenticated' ) return {'token': authorization}

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

{"detail": "Not authenticated"}

Пример

Давайте добавим заголовок WWW-Authenticate к ответу, как того требует спецификация HTTP для статуса 401:

<+python+> from fastapi import FastAPI, Header, HTTPException, status app = FastAPI() @app.get('/article') def article(authorization: str = Header(default=None)): if authorization != 'Bearer abcde': raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail='Invalid token', headers={'WWW-Authenticate': 'Bearer'} ) return {'text': 'article'} <-python+>

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

{"detail": "Invalid token"}

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

  • статус HTTP_403_FORBIDDEN,
    который сообщает, что доступ запрещён
  • статус HTTP_400_BAD_REQUEST,
    который сообщает о некорректном запросе
  • статус HTTP_422_UNPROCESSABLE_ENTITY,
    который сообщает об ошибке валидации данных
  • модуль status,
    который содержит все HTTP-статусы FastAPI
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить