from datetime import datetime, timedelta, timezone from jose import JWTError, jwt from app.core.config import settings ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_DAYS = 7 def create_access_token(data: dict) -> str: """创建 JWT token""" to_encode = data.copy() expire = datetime.now(timezone.utc) + timedelta(days=ACCESS_TOKEN_EXPIRE_DAYS) to_encode.update({"exp": expire}) return jwt.encode(to_encode, settings.secret_key, algorithm=ALGORITHM) def decode_access_token(token: str) -> dict | None: """解码 JWT token""" try: payload = jwt.decode(token, settings.secret_key, algorithms=[ALGORITHM]) return payload except JWTError: return None