taolib.testing.audit.middleware#
FastAPI 审计日志中间件。
自动记录所有 API 请求的审计日志。
Attributes#
Classes#
FastAPI 审计日志中间件。 |
Functions#
|
提取客户端 IP 地址。 |
|
尝试从请求中提取用户 ID。 |
|
过滤敏感请求头。 |
Module Contents#
- taolib.testing.audit.middleware.logger#
- taolib.testing.audit.middleware.DEFAULT_EXCLUDE_PATHS#
- taolib.testing.audit.middleware.SENSITIVE_HEADERS#
- taolib.testing.audit.middleware.extract_client_ip(request: fastapi.Request) str#
提取客户端 IP 地址。
优先级: 1. X-Forwarded-For 第一个 IP(代理场景) 2. X-Real-IP 3. request.client.host(直接连接)
- 参数:
request -- FastAPI 请求对象
- 返回:
客户端 IP 地址
- taolib.testing.audit.middleware.extract_user_id(request: fastapi.Request) str | None#
尝试从请求中提取用户 ID。
从 request.state.user 或自定义头 X-User-ID 提取。
- 参数:
request -- FastAPI 请求对象
- 返回:
用户 ID 或 None
- taolib.testing.audit.middleware.filter_headers(headers: dict[str, str]) dict[str, str]#
过滤敏感请求头。
- 参数:
headers -- 原始请求头
- 返回:
过滤后的请求头
- class taolib.testing.audit.middleware.AuditMiddleware(app: Any, audit_logger: taolib.testing.audit.logger.AuditLogger, exclude_paths: set[str] | None = None, include_request_body: bool = False, include_response_body: bool = False, sensitive_body_paths: set[str] | None = None)#
Bases:
starlette.middleware.base.BaseHTTPMiddlewareFastAPI 审计日志中间件。
自动记录所有 API 请求的审计日志,包括: - 请求方法和路径 - 客户端 IP 和 User-Agent - 用户 ID(如果已认证) - 响应状态码和响应时间
- 参数:
app -- ASGI 应用
audit_logger -- 审计日志记录器
exclude_paths -- 排除的路径前缀集合
include_request_body -- 是否记录请求体
include_response_body -- 是否记录响应体
sensitive_body_paths -- 包含敏感数据的路径前缀集合
- _audit_logger#
- _exclude_paths#
- _include_request_body = False#
- _include_response_body = False#
- _sensitive_body_paths#
- async dispatch(request: fastapi.Request, call_next: Any) fastapi.Response#
处理请求并记录审计日志。
- 参数:
request -- 接收的请求
call_next -- 下一个处理函数
- 返回:
响应对象
- _determine_action(method: str, path: str) taolib.testing.audit.models.AuditAction#
根据请求方法和路径确定操作类型。
- 参数:
method -- HTTP 方法
path -- 请求路径
- 返回:
操作类型