taolib.testing.auth.fastapi.middleware#

FastAPI 认证中间件。

提供 ASGI 中间件,自动填充 request.state.user

Classes#

AuthMiddleware

认证中间件。

SimpleAuthMiddleware

简化版认证中间件。

Module Contents#

class taolib.testing.auth.fastapi.middleware.AuthMiddleware(app: Any, auth_dependency: collections.abc.Callable[Ellipsis, collections.abc.Coroutine[Any, Any, taolib.testing.auth.models.AuthenticatedUser]], exclude_paths: list[str] | None = None)#

Bases: starlette.middleware.base.BaseHTTPMiddleware

认证中间件。

在请求处理前尝试认证,成功时将用户信息附加到 request.state.user

参数:
  • app -- ASGI 应用

  • auth_dependency -- 认证依赖函数(与 create_auth_dependency 返回的函数相同)

  • exclude_paths -- 不需要认证的路径前缀列表

_auth_dependency#
_exclude_paths#
async dispatch(request: fastapi.Request, call_next: starlette.middleware.base.RequestResponseEndpoint) fastapi.Response#

处理请求认证。

_should_skip(path: str) bool#

检查路径是否应跳过认证。

static _extract_bearer_token(request: fastapi.Request) str | None#

从 Authorization 头提取 Bearer token。

class taolib.testing.auth.fastapi.middleware.SimpleAuthMiddleware(app: Any, jwt_service: Any, blacklist: Any = None, api_key_lookup: Any = None, exclude_paths: list[str] | None = None)#

Bases: starlette.middleware.base.BaseHTTPMiddleware

简化版认证中间件。

直接使用 JWTService 和黑名单进行认证,不依赖 FastAPI 的依赖注入系统。 适用于需要在中间件层面进行认证的场景。

参数:
  • app -- ASGI 应用

  • jwt_service -- JWT 令牌服务

  • blacklist -- 令牌黑名单实现

  • api_key_lookup -- API 密钥查找实现

  • exclude_paths -- 不需要认证的路径前缀列表

_jwt_service#
_blacklist = None#
_api_key_lookup = None#
_exclude_paths#
_should_skip(path: str) bool#

检查路径是否应跳过认证。

async dispatch(request: fastapi.Request, call_next: starlette.middleware.base.RequestResponseEndpoint) fastapi.Response#

处理请求认证。