Rýchla autentifikácia tokenov pomocou FastAPI
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:
bashpip 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:
pythonfrom 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:
pythonfrom 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:
pythonfrom 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:
pythonfrom 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