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

Атрибут scheme

Атрибут scheme принадлежит классу HTTPAuthorizationCredentials и доступен через зависимость HTTPBearer. Он содержит строку с названием схемы авторизации, которую клиент указал в заголовке Authorization. Например, для заголовка Authorization: Bearer abcde атрибут scheme вернёт строку 'Bearer'. Чаще всего используется для проверки, что клиент применил именно ожидаемую схему.

Синтаксис

credentials.scheme

Пример

Давайте извлечём схему из заголовка и вернём её клиенту:

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

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

{"scheme": "Bearer"}

Пример

Давайте проверим, что клиент применил схему 'Bearer', и вернём ошибку при другом значении:

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

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

{"scheme": "Bearer", "token": "abcde"}

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

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