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

Функция Security

Функция Security применяется внутри параметров обработчика маршрута и создаёт зависимость безопасности. Первым параметром передаётся вызываемый объект зависимости, который извлекает и проверяет учётные данные из запроса. Вторым параметром передаётся список областей доступа scopes. В отличие от Depends, функция Security умеет передавать запрошенные области в саму зависимость, а также сохранять их в схему OpenAPI.

Синтаксис

Security(dependency, scopes=None, use_cache=True)

Параметр dependency задаёт зависимость, которая вернёт учётные данные или выбросит ошибку HTTPException. Параметр scopes принимает список строк или одну строку с требуемыми областями доступа. Параметр use_cache управляет кэшированием результата зависимости.

Пример

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

from fastapi import FastAPI, Security, HTTPException from fastapi.security import APIKeyHeader app = FastAPI() api_key = APIKeyHeader(name='X-API-Key') def verify_key(key: str = Security(api_key)): if key != 'abcde': raise HTTPException(status_code=403, detail='Forbidden') return key @app.get('/') def index(key: str = Security(verify_key)): return {'key': key}

Результат выполнения кода для заголовка X-API-Key: abcde:

{"key": "abcde"}

Пример

Давайте передадим области доступа scopes в зависимость безопасности:

from fastapi import FastAPI, Security from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2 = OAuth2PasswordBearer( tokenUrl='token', scopes={'items:read': 'Read items'} ) def read_items(token: str = Security(oauth2, scopes=['items:read'])): return {'token': token} @app.get('/items/') def items(token: str = Security(read_items)): return {'token': token}

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

{"token": "abcde"}

Запрошенная область items:read попадает в схему безопасности OpenAPI и отображается в документации.

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

  • функция Depends,
    которая создаёт обычную зависимость без областей доступа
  • класс OAuth2PasswordBearer,
    который извлекает токен из заголовка Authorization
  • класс SecurityScopes,
    который хранит запрошенные области доступа
  • параметр scopes,
    который задаёт требуемые области доступа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить