23 lines
752 B
Python
23 lines
752 B
Python
"""SSO Cookie 本地验签 —— 与 SSO 中心共享 SECRET_KEY"""
|
|
from fastapi import Request, HTTPException
|
|
from jose import jwt, JWTError
|
|
|
|
# 必须与 SSO 中心 sso_config.py 完全一致
|
|
SECRET_KEY = "your-secret-key-change-in-production"
|
|
ALGORITHM = "HS256"
|
|
|
|
|
|
def get_current_user_from_cookie(request: Request) -> dict:
|
|
"""从请求 Cookie 中读取 access_token,本地验签后返回用户信息"""
|
|
token = request.cookies.get("access_token")
|
|
if not token:
|
|
return None
|
|
try:
|
|
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
|
|
username: str = payload.get("sub")
|
|
if not username:
|
|
return None
|
|
return {"username": username}
|
|
except JWTError:
|
|
return None
|