Как реализуешь авторизацию на проекте
Python
Senior
Без компании
Как реализуешь авторизацию на проекте
Ответы
Для авторизации в Python-проектах чаще всего используют JWT (JSON Web Tokens) или сессии. Вот пример с JWT через FastAPI:
```
from fastapi import Depends, FastAPI, HTTPException
from fastapi.security import OAuth2PasswordBearer
from jose import JWTError, jwt
from passlib.context import CryptContext
SECRET_KEY = "secret"
ALGORITHM = "HS256"
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
def verify_password(plain_pwd, hashed_pwd):
return pwd_context.verify(plain_pwd, hashed_pwd)
def create_access_token(data: dict):
return jwt.encode(data, SECRET_KEY, algorithm=ALGORITHM)
async def get_current_user(token: str = Depends(oauth2_scheme)):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
return payload
except JWTError:
raise HTTPException(status_code=401, detail="Invalid token")
```
Основные моменты:
- Храним хеши паролей (не сами пароли!)
- Используем HTTPS для защиты токенов
- JWT содержит payload с user_id и сроком действия
- Для production нужно:
- Реализовать refresh токены
- Хранить SECRET_KEY в env-переменных
- Добавить обработку CSRF для веб-форм
Для больших проектов лучше использовать готовые решения типа Auth0 или Keycloak.