Добавьте аутентификацию в FastAPI через промежуточное программное обеспечение и включите OpenAPI.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Добавьте аутентификацию в FastAPI через промежуточное программное обеспечение и включите OpenAPI.

Сообщение Anonymous »

Основная цель: средство простой аутентификации большинства (но не всех) маршрутов в одном месте (отдельном файле), чтобы мне не приходилось добавлять код/документацию к каждому маршруту по порядку. чтобы заставить работать аутентификацию или openapi.
Я хотел бы реализовать базовую авторизацию на предъявителя в FastAPI, но сделать это в промежуточном программном обеспечении на основе классов. Я сделал это успешно, но я не видел, как это сделать так, чтобы OpenAPI знал об этом (т. е. в документации нет возможности установить токены аутентификации)

Код: Выделить всё

class AuthMiddleware:
def __init__(self, settings):
self.settings = settings

async def __call__(self, request: Request, call_next):
if self.is_protected_url(request.method, request.url.path):
auth = request.headers.get("Authorization")
scheme, data = (auth or " ").split(" ", 1)
if scheme != "Bearer":
return JSONResponse(None, 401, {"WWW-Authenticate": "Bearer"})
if data != self.settings.auth_token:
return JSONResponse(None, 401, {"WWW-Authenticate": "Bearer"})

return await call_next(request)

def is_protected_url(self, method, url):
""" does what it does """
В основном файле:

Код: Выделить всё

from path.to.auth import AuthMiddleware

auth_middleware = AuthMiddleware(settings)
app.middleware("http")(auth_middleware)
Кажется, существуют некоторые существующие классы аутентификации, но я не могу понять, как правильно заставить их работать в промежуточном программном обеспечении на основе классов, которое находится в отдельном файле (зависит от не решен).
См.

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-openapi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»