taolib.testing.rate_limiter.middleware#
FastAPI middleware for rate limiting.
Classes#
FastAPI 限流中间件。 |
Functions#
|
提取客户端 IP 地址。 |
|
尝试从请求中提取用户 ID。 |
Module Contents#
- taolib.testing.rate_limiter.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.rate_limiter.middleware.extract_user_id(request: fastapi.Request) str | None#
尝试从请求中提取用户 ID。
从 JWT token 的 sub 字段或自定义头 X-User-ID 提取。
- 参数:
request -- FastAPI 请求对象
- 返回:
用户 ID 或 None
- class taolib.testing.rate_limiter.middleware.RateLimitMiddleware(app: Any, limiter: taolib.testing.rate_limiter.limiter.RateLimiter, violation_tracker: taolib.testing.rate_limiter.violation_tracker.ViolationTracker | None = None, logger: logging.Logger | None = None)#
Bases:
starlette.middleware.base.BaseHTTPMiddlewareFastAPI 限流中间件。
功能: - 提取用户标识符(用户 ID 或 IP) - 检查白名单和 bypass 路径 - 调用限流引擎检查请求 - 注入限流响应头 - 记录违规行为
- 参数:
app -- ASGI 应用
limiter -- 限流引擎实例
violation_tracker -- 违规追踪器实例(可选)
logger -- 日志记录器
- _limiter#
- _violation_tracker = None#
- _logger#
- async dispatch(request: fastapi.Request, call_next: Any) fastapi.Response#
处理请求。
- 参数:
request -- 接收的请求
call_next -- 下一个处理函数
- 返回:
响应对象