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

Класс HTTPBearer

Класс HTTPBearer применяется для извлечения Bearer-токена из заголовка Authorization. Он проверяет, что схема аутентификации - Bearer, и возвращает объект HTTPAuthorizationCredentials с полями scheme и credentials. Первым параметром передаётся bearerFormat - описание формата токена для документации. Вторым параметром - auto_error, который определяет, выбрасывать ли ошибку 403 при отсутствии токена.

Синтаксис

HTTPBearer(bearerFormat=None, auto_error=True)

Параметр bearerFormat задаёт строку с описанием формата Bearer-токена, которая отображается в Swagger UI. Параметр auto_error при значении True автоматически возвращает ошибку 403, если заголовок Authorization отсутствует или имеет неверную схему.

Пример

Давайте создадим простой эндпоинт с Bearer-аутентификацией:

from fastapi import FastAPI, Depends from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials app = FastAPI() security = HTTPBearer() @app.get('/protected') def protected(credentials: HTTPAuthorizationCredentials = Depends(security)): return {'token': credentials.credentials}

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

{"token": "abcde"}

Пример

Давайте проверим токен вручную и вернём ошибку при неверном значении:

<+python+> from fastapi import FastAPI, Depends, HTTPException from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials app = FastAPI() security = HTTPBearer() VALID_TOKEN = 'abcde' @app.get('/user') def get_user(credentials: HTTPAuthorizationCredentials = Depends(security)): if credentials.credentials != VALID_TOKEN: raise HTTPException(status_code=401, detail='Invalid token') return {'user': 'admin'} <-python+>

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

{"user": "admin"}

Пример

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

<+python+> from fastapi import FastAPI, Depends, HTTPException from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials app = FastAPI() security = HTTPBearer(auto_error=False) @app.get('/data') def get_data(credentials: HTTPAuthorizationCredentials | None = Depends(security)): if credentials is None: raise HTTPException(status_code=401, detail='Token required') return {'credentials': credentials.credentials} <-python+>

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

{"detail": "Token required"}

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

  • класс HTTPAuthorizationCredentials,
    который хранит схему и учётные данные из заголовка
  • класс HTTPBasic,
    который реализует HTTP Basic аутентификацию
  • класс Depends,
    который внедряет зависимость аутентификации в обработчик
  • класс HTTPDigest,
    который реализует HTTP Digest аутентификацию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить