CaiYouHui后端fastapi实现

token.py 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # app/schemas/token.py
  2. from pydantic import BaseModel, Field
  3. from typing import Optional
  4. from datetime import datetime, timezone, timedelta
  5. class Token(BaseModel):
  6. """令牌响应模型"""
  7. access_token: str
  8. token_type: str = "bearer"
  9. expires_in: Optional[int] = None
  10. refresh_token: Optional[str] = None
  11. class TokenResponse(Token):
  12. """带用户信息的令牌响应"""
  13. user: dict
  14. class TokenData(BaseModel):
  15. """令牌数据模型"""
  16. username: Optional[str] = None
  17. user_id: Optional[int] = None
  18. email: Optional[str] = None
  19. exp: Optional[int] = None
  20. iat: Optional[int] = None
  21. class TokenPayload(BaseModel):
  22. """令牌载荷"""
  23. sub: Optional[str] = None
  24. exp: Optional[datetime] = None
  25. class RefreshTokenRequest(BaseModel):
  26. """刷新令牌请求"""
  27. refresh_token: str
  28. class TokenCreate(BaseModel):
  29. """创建令牌请求"""
  30. user_id: int
  31. username: str
  32. email: str
  33. # 导出所有模型
  34. __all__ = [
  35. "Token",
  36. "TokenResponse",
  37. "TokenData",
  38. "TokenPayload",
  39. "RefreshTokenRequest",
  40. "TokenCreate"
  41. ]