Как сделать авторизацию на fastapi?

Для реализации авторизации на FastAPI вам потребуется использовать зависимости (dependencies) и middleware. Ниже я опишу подробный процесс создания авторизации на FastAPI с использованием токенов.

  1. Установите FastAPI и uvicorn, если у вас их еще нет:
   pip install fastapi uvicorn
  1. Создайте файл main.py и добавьте следующий код для создания FastAPI приложения:
from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer

app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.get("/items/")
async def read_items(token: str = Depends(oauth2_scheme)):
    if token != "fake_access_token":
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid credentials",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return {"items": [{"item": "Item1"}, {"item": "Item2"}]}
  1. В приведенном коде мы создали FastAPI приложение и определили oauth2_scheme с использованием OAuth2PasswordBearer. Декоратор @app.get("/items/") используется для определения маршрута, защищенного авторизацией.
  1. Чтобы обеспечить авторизацию, создайте зависимость (dependency) get_current_user(token: str = Depends(oauth2_scheme)), которая будет проверять токен при каждом запросе:
async def get_current_user(token: str = Depends(oauth2_scheme)):
    if token != "fake_access_token":
        raise HTTPException(
            status_code=status.HTTP_401_UNAUTHORIZED,
            detail="Invalid credentials",
            headers={"WWW-Authenticate": "Bearer"},
        )
    return token
  1. Теперь вы можете использовать эту зависимость в ваших эндпоинтах, чтобы обеспечить авторизацию:
@app.get("/users/me")
async def read_users_me(token: str = Depends(get_current_user)):
    return {"token": token}
  1. Запустите сервер с помощью uvicorn:
   uvicorn main:app --reload
  1. Теперь при обращении по маршруту http://127.0.0.1:8000/items/ вы должны будете предоставить токен авторизации. В данном случае используется простая проверка по значению токена "fakeaccesstoken".

Это базовый пример реализации авторизации на FastAPI с помощью токенов. В реальном проекте вам следует использовать более безопасные методы генерации и проверки токенов, такие как JWT (JSON Web Tokens), а также хранить данные о пользователях в базе данных. Кроме того, не забывайте обеспечить безопасность своего приложения путем использования HTTPS.