Как изменить формат токена fastapi?
Здравствуйте, вопрос такой. Я использую OAuth2PasswordBearer в связке с кастоиным tokenUrl для реализации авторизации. Хоть я и возвращаю {"access_token": токен, "token_type": ""}. Всё равно кто-то где-то добавляет Bearer в заголовок. Мне нужно чтобы
1) Авторизация работала в /docs
2) Формат токена был не Authorization: Bearer Token, а Authorization: Token
Дополнительно:
Bearer Auth по определению имеет такой формат. Тут скорее всего нужно кастомный класс написать. С fastapi только какую-то простую мелочь писал, но вот для requests пару раз делал нестандартные авторизации - там нужно класс с нужным интерфейсом сделать и его передавать вместо умолчального.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для изменения формата токена в FastAPI, вам нужно создать собственный класс, унаследованный от класса OAuth2PasswordBearer и переопределить метод __call__ для создания нового экземпляра OAuth2PasswordRequestForm с вашим собственным форматом токена.
Вот пример кода на Python, показывающий, как это можно сделать:
from fastapi.security import OAuth2PasswordBearer from fastapi.security.oauth2 import OAuth2PasswordRequestForm class CustomOAuth2PasswordBearer(OAuth2PasswordBearer): async def __call__(self, request: Request) -> Optional[str]: form_data = await request.form() data = OAuth2PasswordRequestForm(**dict(form_data)) return data oauth2_scheme = CustomOAuth2PasswordBearer(tokenUrl="token")
В этом примере мы создаем новый класс CustomOAuth2PasswordBearer, который наследуется от OAuth2PasswordBearer и переопределяет метод __call__. Мы также создаем экземпляр этого класса с помощью переменной oauth2_scheme.
Теперь вы можете использовать этот oauth2_scheme в своих маршрутах FastAPI для проверки токена с вашим собственным форматом.
Надеюсь, это поможет вам изменить формат токена в FastAPI!