FastAPI, как добавить заголовок авторизации к следующим запросамPython

Программы на Python
Anonymous
FastAPI, как добавить заголовок авторизации к следующим запросам

Сообщение Anonymous »


Работаю над аутентификацией API и застрял в чём-то простом (надеюсь). У меня есть конечная точка login:

@router.get("/login") def вход в систему (запрос: Запрос): return templates.TemplateResponse("auth/login.html", {"request": request}) @router.post("/логин") деф логин( запрос: Запрос, имя пользователя: str = Form(...), пароль: str = Форма(...), ): ошибки = [] user_db = pd.read_excel('users.xlsx') пользователь = аутентификация_пользователь(user_db=user_db, имя пользователя=имя пользователя, пароль=пароль) access_token = create_access_token(data={"sub": имя пользователя}) ответ.set_cookie( key="access_token", value=f"Носитель {access_token}", httponly=True ) response.headers['Authorization'] = f"Носитель {access_token}" обратный ответ Это работает и создает токен, но у меня есть другая конечная точка, которая требует аутентификации, но она не получает заголовок «Авторизация» при входе, что приводит к сбою аутентификации:

@router.get("/register") регистрация def (запрос: Запрос, access_token: Annotated[Union[str, None], Cookie()] = Нет ): # печать(токен_доступа) #print(request.headers['Авторизация']) return templates.TemplateResponse("auth/register.html", {"request": request}) @router.post("/register") регистрация определения( запрос: Запрос, current_user: Annotated[User, Depends(get_current_active_user)], # Здесь не получается имя пользователя: str = Form(...), пароль: str = Форма(...), пароль_подтверждение: str = Форма(...), ): печать (текущий_пользователь) пытаться: пользователь = UserCreate(имя пользователя=имя пользователя, пароль=пароль, пароль_подтверждение=пароль_подтверждение, суперпользователь = Ложь) если текущий_пользователь.суперпользователь: сообщение = crear_usuario (пользователь = пользователь) вернуть JSONResponse(content={'message': message}) еще: поднять HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, Detail="Пользователь должен быть суперпользователем", headers={"WWW-Authenticate": "Носитель"}, ) кроме ValidationError как e: error_list = json.loads(e.json()) для элемента в error_list: error.append(item.get("loc")[0] + ": " + item.get("msg")) вернуть шаблоны.TemplateResponse( "auth/register.html", {"запрос": запрос, "ошибки": ошибки} ) Мне удалось отправить токен программным путем, добавив токен в заголовки в Python, но мне нужно, чтобы это работало для обычного пользователя. Чем отличается кнопка «Авторизация» в пользовательском интерфейсе Swagger, которая позволяет мне отправлять заголовок авторизации вместе с моими запросами?
Изображение

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