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

Класс HTTPDigest

Класс HTTPDigest применяется как зависимость в маршрутах FastAPI для организации HTTP Digest аутентификации. Он наследуется от класса HTTPBase и извлекает заголовок Authorization, проверяя, что схема аутентификации равна 'Digest'. При успешной проверке возвращается объект HTTPAuthorizationCredentials с полями scheme и credentials. Первым параметром передаётся scheme_name - имя схемы для документации OpenAPI, вторым - auto_error, который определяет, выбрасывать ли ошибку при отсутствии заголовка.

Синтаксис

from fastapi.security import HTTPDigest security = HTTPDigest(scheme_name='Digest', auto_error=True)

Пример

Давайте создадим зависимость HTTPDigest и повесим её на маршрут:

from fastapi import FastAPI, Depends from fastapi.security import HTTPDigest, HTTPAuthorizationCredentials app = FastAPI() security = HTTPDigest() @app.get('/') def index(credentials: HTTPAuthorizationCredentials = Depends(security)): return { 'scheme': credentials.scheme, 'credentials': credentials.credentials }

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

{"scheme": "Digest", "credentials": "abcde"}

Пример

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

from fastapi import FastAPI, Depends, HTTPException from fastapi.security import HTTPDigest, HTTPAuthorizationCredentials app = FastAPI() security = HTTPDigest() @app.get('/user') def user(credentials: HTTPAuthorizationCredentials = Depends(security)): if credentials.credentials != 'abcde': raise HTTPException(status_code=401, detail='Invalid credentials') return {'user': 'authorized'}

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

{"user": "authorized"}

Пример

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

<+python+> from fastapi import FastAPI, Depends from fastapi.security import HTTPDigest, HTTPAuthorizationCredentials app = FastAPI() security = HTTPDigest(auto_error=False) @app.get('/') def index(credentials: HTTPAuthorizationCredentials = Depends(security)): if credentials is None: return {'text': 'no credentials'} return {'text': 'hello'} <-python+>

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

{"text": "no credentials"}

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

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