Класс APIKeyCookie
Класс APIKeyCookie применяется для аутентификации
пользователей по API-ключу, который передаётся в cookie.
Он наследуется от класса APIKeyBase и является
частным случаем извлечения ключа из определённого места запроса.
Конструктор принимает обязательный параметр name -
имя cookie, в котором ожидается ключ.
Также можно указать необязательные параметры scheme_name
и auto_error. Класс используется в связке
с Security или Depends.
Синтаксис
from fastapi.security import APIKeyCookie
api_key = APIKeyCookie(name, scheme_name=None, auto_error=True)
Пример
Давайте создадим простой обработчик, который проверяет наличие API-ключа в cookie:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import APIKeyCookie
app = FastAPI()
api_key = APIKeyCookie(name="session_token")
@app.get('/items/')
def read_items(token: str = Depends(api_key)):
if token != "abcde":
raise HTTPException(status_code=403, detail="Invalid token")
return {"token": token}
При запросе к /items/ с cookie
session_token=abcde результат выполнения кода:
{"token": "abcde"}
Пример
Давайте зададим кастомное имя схемы и отключим автоматическую ошибку, чтобы обрабатывать отсутствие ключа вручную:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import APIKeyCookie
app = FastAPI()
api_key = APIKeyCookie(
name="api_key",
scheme_name="MyCookieAuth",
auto_error=False
)
@app.get('/users/')
def read_users(token: str = Depends(api_key)):
if not token:
return {"message": "No token provided"}
return {"token": token}
Результат выполнения кода для запроса без cookie:
{"message": "No token provided"}
Смотрите также
-
класс
APIKeyHeader,
который извлекает API-ключ из заголовка запроса -
класс
APIKeyQuery,
который извлекает API-ключ из query-параметров -
функция
Security,
которая используется для внедрения зависимостей аутентификации -
функция
Depends,
которая внедряет зависимость в обработчик маршрута