# auth Specification ## Purpose TBD - created by archiving change refactor-framework-cleanup. Update Purpose after archive. ## Requirements ### Requirement: Unified Authentication Middleware 系统 SHALL 提供统一的认证中间件,支持可配置的 Token 提取和验证。 #### Scenario: Token 验证成功 - **WHEN** 请求携带有效的 Token - **THEN** 中间件提取并验证 Token - **AND** 将用户信息同时设置到 Fiber Locals 和 Context - **AND** 请求继续执行 #### Scenario: Token 缺失 - **WHEN** 请求未携带 Token - **AND** 路径不在跳过列表中 - **THEN** 返回 AppError(CodeMissingToken) - **AND** 由全局 ErrorHandler 处理错误响应 #### Scenario: Token 无效 - **WHEN** 请求携带的 Token 无效或过期 - **THEN** 返回 AppError(CodeUnauthorized) - **AND** 由全局 ErrorHandler 处理错误响应 #### Scenario: 跳过路径 - **WHEN** 请求路径在 SkipPaths 配置中 - **THEN** 中间件跳过认证 - **AND** 请求直接继续执行 ### Requirement: User Context Management 认证中间件 SHALL 提供用户上下文管理函数,支持从 Context 获取用户信息。 #### Scenario: 获取用户 ID - **WHEN** 调用 GetUserIDFromContext(ctx) - **AND** 认证已通过 - **THEN** 返回当前用户的 ID #### Scenario: 检查 Root 用户 - **WHEN** 调用 IsRootUser(ctx) - **THEN** 返回当前用户是否为 Root 用户 #### Scenario: 设置用户到 Fiber Context - **WHEN** 调用 SetUserToFiberContext(c, userInfo) - **THEN** 用户信息被设置到 Fiber Locals - **AND** 用户信息被设置到请求 Context(供 GORM 等使用) ### Requirement: Auth Middleware Configuration 认证中间件 SHALL 支持灵活的配置选项。 #### Scenario: 自定义 Token 提取 - **WHEN** 配置了 TokenExtractor 函数 - **THEN** 使用自定义函数从请求中提取 Token #### Scenario: 默认 Token 提取 - **WHEN** 未配置 TokenExtractor - **THEN** 从 Authorization Header 提取 Bearer Token #### Scenario: 自定义验证函数 - **WHEN** 配置了 Validator 函数 - **THEN** 使用自定义函数验证 Token 并返回用户信息