auth.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from fastapi import Depends, HTTPException, Request, status
  2. from agent.db.database import SessionLocal
  3. from agent.libs.user import SessionBusiness, UserBusiness
  4. class SessionValues:
  5. def __init__(self, session_id: str, user_id: str, username: str, full_name: str):
  6. self.session_id = session_id
  7. self.user_id = user_id
  8. self.username = username
  9. self.full_name = full_name
  10. def verify_session_id(request: Request)-> SessionValues:
  11. # 获取 Authorization 头
  12. with SessionLocal() as db:
  13. session_business = SessionBusiness(db)
  14. user_business = UserBusiness(db)
  15. auth_header = request.headers.get("Authorization")
  16. if not auth_header:
  17. raise HTTPException(
  18. status_code=status.HTTP_401_UNAUTHORIZED,
  19. detail="Authorization header is missing",
  20. headers={"WWW-Authenticate": "Beaver"}
  21. )
  22. # 检查 Authorization 头是否符合预期格式
  23. if not auth_header.startswith("Beaver "):
  24. print("Invalid Authorization header format", auth_header)
  25. raise HTTPException(
  26. status_code=status.HTTP_401_UNAUTHORIZED,
  27. detail="Invalid Authorization header format",
  28. headers={"WWW-Authenticate": "Beaver"}
  29. )
  30. # 提取 session_id
  31. session_user_id = auth_header.split(" ")[1]
  32. session_id = auth_header.split(" ")[2]
  33. return SessionValues(session_id, '', session_user_id, '')
  34. # 在这里添加你的 session_id 校验逻辑
  35. # 例如,检查 session_id 是否在数据库中存在
  36. # if not session_business.validate_session(session_user_id, session_id):
  37. # print("Invalid session_id", session_user_id, session_id)
  38. # raise HTTPException(
  39. # status_code=status.HTTP_401_UNAUTHORIZED,
  40. # detail="Invalid session_id",
  41. # headers={"WWW-Authenticate": "Beaver"}
  42. # )
  43. #
  44. # user = user_business.get_user_by_username(session_user_id)
  45. # if user is None:
  46. # print("Invalid user_id", session_user_id)
  47. # raise HTTPException(
  48. # status_code=status.HTTP_401_UNAUTHORIZED,
  49. # detail="Invalid username",
  50. # headers={"WWW-Authenticate": "Beaver"}
  51. # )
  52. # return SessionValues(session_id, user.id, user.username, user.full_name)
  53. # 如果校验通过,返回 session_id 或其他需要的信息
  54. return None