11# @Author: Zhu Guowei
22# @Date: 2025/6/17
33# @Function:
4- from starlette .middleware .authentication import AuthenticationMiddleware
54from starlette .middleware .base import BaseHTTPMiddleware
65from starlette .requests import Request
76from starlette .responses import JSONResponse
7+ from starlette import status
88from structlog import get_logger
99logger = get_logger (__name__ )
1010import os
@@ -20,24 +20,26 @@ async def dispatch(self, request: Request, call_next):
2020 # 如果未配置 API_KEY,且允许跳过,则直接放行(便于开发环境)
2121
2222 host = request .headers .get ("HOST" )
23- logger .info (f"host: { host } , { request .headers } " )
23+ headers = request .headers
24+ auth_header = headers .get ("authorization" )
25+
2426 for h in ALLOW_HOSTS :
2527 if h in host :
2628 return await call_next (request )
2729 if not self .api_key :
28- logger .info (f"request.url: { request .url } " )
2930 return await call_next (request )
3031
3132 # 获取 Authorization头
32- auth_header = request .headers .get ("authorization" )
33- logger .info (f"url: { request .url } , query_params: { request .query_params } " )
34- logger .info (f"auth-header: { auth_header } " )
33+ logger .info (f"simple-auth" , host = host , header = auth_header )
34+
3535 if not auth_header or not auth_header .lower ().startswith ("bearer " ):
36- return JSONResponse ({"detail" : "Bearer Token Not Provided" }, status_code = 401 )
36+ logger .warning (f"simple-auth" , host = host , detail = "Bearer Token Not Provided" , header = auth_header )
37+ return JSONResponse ({"detail" : "Bearer Token Not Provided" }, status_code = status .HTTP_401_UNAUTHORIZED )
3738
3839 token = auth_header [7 :].strip ()
3940 if token != self .api_key :
40- return JSONResponse ({"detail" : "Invalid Token" }, status_code = 403 )
41+ logger .warning (f"simple-auth" , host = host , detail = "Invalid Token" , token = token , header = auth_header )
42+ return JSONResponse ({"detail" : "Invalid Token" }, status_code = status .HTTP_403_FORBIDDEN )
4143
4244 # 认证通过,继续处理请求
4345 return await call_next (request )
0 commit comments