OncoLit: a multi-tenant oncology literature search, feed, and collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL. Includes PubMed pipeline, drug approvals, AI summaries, and systematic review tools.
18 lines
620 B
Python
18 lines
620 B
Python
"""请求级中间件:CORS/CSRF 等(多租户上下文的设置移至 get_current_user)"""
|
||
|
||
import uuid
|
||
|
||
from starlette.middleware.base import BaseHTTPMiddleware
|
||
from starlette.requests import Request
|
||
|
||
|
||
class TraceMiddleware(BaseHTTPMiddleware):
|
||
"""为每个请求注入 request_id 用于日志追踪"""
|
||
|
||
async def dispatch(self, request: Request, call_next):
|
||
request_id = request.headers.get("X-Request-Id") or str(uuid.uuid4())
|
||
request.state.request_id = request_id
|
||
response = await call_next(request)
|
||
response.headers["X-Request-Id"] = request_id
|
||
return response
|