Для реализации авторизации на 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.