auth_dependency.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """
  2. 认证依赖函数
  3. """
  4. from fastapi import Depends, HTTPException, Request
  5. from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
  6. from app.services.jwt_token import verify_and_refresh_token
  7. import logging
  8. logger = logging.getLogger(__name__)
  9. security = HTTPBearer()
  10. async def get_current_user_with_refresh(
  11. request: Request,
  12. credentials: HTTPAuthorizationCredentials = Depends(security),
  13. ) -> dict:
  14. token = credentials.credentials
  15. payload, new_token = verify_and_refresh_token(token)
  16. if not payload:
  17. raise HTTPException(status_code=401, detail="无效的访问令牌")
  18. if new_token:
  19. request.state.new_token = new_token
  20. return payload
  21. async def get_current_user(
  22. credentials: HTTPAuthorizationCredentials = Depends(security),
  23. ) -> dict:
  24. from app.services.jwt_token import verify_token
  25. token = credentials.credentials
  26. payload = verify_token(token)
  27. if not payload:
  28. raise HTTPException(status_code=401, detail="无效的访问令牌")
  29. return payload