Я собирался это сделать с использованием промежуточного программного обеспечения, например
Код: Выделить всё
@app.middleware("http")
async def validate_api_key(request, call_next):
if is_production():
api_key = request.headers.get("X-API-KEY")
if api_key != settings.API_KEY:
raise HTTPException(
status_code=401, detail="Unauthorized"
)
response = await call_next(request)
return response
Следующее, что я прочитал, было то, что я могу использовать SubApps, но это для меня на самом деле не имеет смысла иметь / и /health в одном приложении, а затем все остальные конечные точки в другом приложении. Потому что не похоже, что вы можете смонтировать их с одним и тем же префиксом.
Другим способом было добавить его для каждой конечной точки с использованием зависимостей, например
Код: Выделить всё
@app.get("/protected", dependencies=[Depends(api_key_auth)])
Но включать его для каждой функции конечной точки кажется обременительным. что я пишу.
Есть ли лучший способ просто выполнить простую аутентификацию по ключу API для большинства конечных точек?
Подробнее здесь: https://stackoverflow.com/questions/762 ... thcheck-en