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

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

1. Установите FastAPI и uvicorn, если у вас их еще нет:

   pip install fastapi uvicorn

2. Создайте файл 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"}]}

3. В приведенном коде мы создали FastAPI приложение и определили oauth2_scheme с использованием OAuth2PasswordBearer. Декоратор @app.get("/items/") используется для определения маршрута, защищенного авторизацией.

4. Чтобы обеспечить авторизацию, создайте зависимость (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

5. Теперь вы можете использовать эту зависимость в ваших эндпоинтах, чтобы обеспечить авторизацию:

@app.get("/users/me")
async def read_users_me(token: str = Depends(get_current_user)):
    return {"token": token}

6. Запустите сервер с помощью uvicorn:

   uvicorn main:app --reload

7. Теперь при обращении по маршруту http://127.0.0.1:8000/items/ вы должны будете предоставить токен авторизации. В данном случае используется простая проверка по значению токена "fake_access_token".

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