auth.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from fastapi import Depends, HTTPException, status
  2. from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
  3. from app.core.config import settings
  4. from sqlalchemy.orm import Session
  5. from app.core.database import get_db
  6. from app.services.session_service import SessionService
  7. security = HTTPBearer()
  8. def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security), db: Session = Depends(get_db)):
  9. """
  10. 全局鉴权依赖
  11. """
  12. user = session_service.get_user_by_token(db, credentials.credentials)
  13. if not user:
  14. raise HTTPException(
  15. status_code=401,
  16. detail="Invalid or expired session token",
  17. )
  18. return user
  19. def get_current_user(
  20. credentials: HTTPAuthorizationCredentials = Depends(security),
  21. db: Session = Depends(get_db)
  22. ):
  23. token = credentials.credentials
  24. user = SessionService().get_user_by_token(db, token)
  25. if not user:
  26. raise HTTPException(
  27. status_code=status.HTTP_401_UNAUTHORIZED,
  28. detail="Invalid or expired token"
  29. )
  30. return user