from fastapi import FastAPI, Request from core.cache import cache from core.constant import CacheNameConstant from core.current_user import CurrentUserProvider from utils import JwtUtil, logger def add_auth_middleware(app: FastAPI): """ 添加认证中间件 优化用户上下文管理,减少全局状态依赖 """ @app.middleware("http") async def middleware(request: Request, call_next): token = JwtUtil.get_token_from_request(request) try: if token: payload = JwtUtil.verify_token(token) user_id = payload["user_id"] token_cache = await cache.get( CacheNameConstant.AUTHORIZATION_TOKEN, user_id ) if token_cache and token_cache == token: request.state.user_id = user_id await CurrentUserProvider.set_current_user(user_id) else: logger.error(f"token缓存不一致") except Exception as e: logger.error(f"认证失败,{str(e)}") response = await call_next(request) return response