Rýchla autentifikácia tokenov pomocou FastAPI

FastAPI, moderný a výkonný webový rámec pre Python, je ideálny na vytváranie API a mikroslužieb. S narastajúcou potrebou zabezpečenia je autentifikácia užívateľov kľúčovým prvkom každej aplikácie. V tomto článku sa pozrieme na to, ako implementovať autentifikáciu tokenov pomocou FastAPI, čo je proces, ktorý umožňuje užívateľom autentifikovať sa pomocou jednorazových tokenov, ktoré sú generované po úspešnom prihlásení.

Najprv si ukážeme, ako nainštalovať potrebné knižnice a nastaviť základnú štruktúru projektu. Potom prejdeme k vytvoreniu modelov a schém pre užívateľov, vytvoreniu tokenu a spracovaniu overovania. Nakoniec sa pozrieme na to, ako zabezpečiť rôzne cesty vo vašej aplikácii pomocou ochrany tokenom.

1. Nainštalovanie knižníc
Ak chcete začať, potrebujete mať nainštalovaný FastAPI a uvicorn, ako aj knižnicu pre manipuláciu s tokenmi. Môžete ich nainštalovať pomocou pip:

bash
pip install fastapi uvicorn python-jose[cryptography]

2. Základná štruktúra projektu
Vytvorte adresár pre váš projekt a v ňom vytvorte súbor main.py. V tejto fáze môžete nastaviť základný server FastAPI:

python
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"}

3. Vytvorenie modelov a schém
Ďalej vytvoríme model pre našich užívateľov. Môžeme použiť Pydantic na definovanie schémy pre prihlásenie a registráciu užívateľov:

python
from pydantic import BaseModel class User(BaseModel): username: str password: str

4. Generovanie tokenu
Teraz prejdeme k vytvoreniu funkcie na generovanie tokenu. Použijeme python-jose, ktorý nám umožňuje vytvárať a overovať JWT tokeny:

python
from datetime import datetime, timedelta from jose import JWTError, jwt SECRET_KEY = "your_secret_key" ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = 30 def create_access_token(data: dict, expires_delta: timedelta = None): to_encode = data.copy() if expires_delta: expire = datetime.utcnow() + expires_delta else: expire = datetime.utcnow() + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES) to_encode.update({"exp": expire}) encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM) return encoded_jwt

5. Autentifikácia a overovanie tokenu
Vytvorte funkciu na overenie tokenu, aby ste mohli chrániť cesty vo vašej aplikácii:

python
from fastapi import Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") def get_current_user(token: str = Depends(oauth2_scheme)): credentials_exception = HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": "Bearer"}, ) try: payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) username: str = payload.get("sub") if username is None: raise credentials_exception except JWTError: raise credentials_exception return username

6. Ochrana ciest
Nakoniec pridáme ochranu pre niektoré cesty našej aplikácie pomocou funkcie get_current_user:

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

Záver
V tomto článku sme prešli základným procesom implementácie tokenovej autentifikácie pomocou FastAPI. Tento prístup je veľmi efektívny a poskytuje vysokú úroveň zabezpečenia pre vaše aplikácie. Nezabudnite experimentovať a rozšíriť svoje aplikácie o ďalšie funkcie a zabezpečenia.**

Populárne komentáre
    Zatiaľ žiadne komentáre
Komentáre

0