此流程在用户已批准功能需求文档 (requirements.md) 后启动。必须确保相关的需求文档已经存在并获得认可。
基于已批准的需求,创建一份全面、可执行的技术设计文档。这份文档将保存在 .workflow/{feature_name}/design.md 文件中,并作为后续任务规划的基础。
必须严格遵循以下步骤顺序执行:
强制调研与信息请求 (Mandatory Research & Information Request):
创建设计文档初稿 (design.md):
.workflow/{feature_name}/design.md 文件不存在,则创建它。design.md 文档规格”,编写一份包含所有必需部分的设计文档初稿。在适当时,应包含图表或可视化内容(使用 Mermaid 绘制)。口头演练 (Verbal Dry-Run):
互动与批准循环 (Interaction & Approval Loop):
design.md 文档规格与内容要求产出的设计文档必须严格遵循以下结构,并突出设计决策及其背后的理由。
# 设计文档: “记住我”功能 ## 1. 概述 (Overview) ### 1.1. 目标 (Goals) 为用户提供“记住我”选项,允许其在关闭浏览器后的一段时间内(例如 30 天)保持登录状态,以提升回访用户的体验。 ### 1.2. 范围 (Scope) - **In-Scope**: - 在登录页面提供“记住我”复选框。 - 用户勾选后,生成长效持久化令牌。 - 用户下次访问时,通过令牌自动完成登录。 - **Out-of-Scope**: - 管理已登录设备或吊销特定令牌的功能。 - 跨设备同步“记住我”状态。 ### 1.3. 关联需求 (Related Requirements) - (关联需求: F-Auth-05, NF-SEC-02) ## 2. 整体架构 (System Architecture) ### 2.1. 架构图 (Diagram) [此处应嵌入一个高层级的架构图,用于清晰地展示新功能将如何融入现有系统,以及关键组件间的交互关系。**推荐使用序列图 (Sequence Diagram) 来描述交互流程,或使用组件图 (Component Diagram) / C4 模型来展示系统结构。**] ### 2.2. 设计决策与权衡 (Design Decisions & Trade-offs) - **决策**: 采用独立的持久化令牌,而非延长会话(session)有效期。 - **理由**: 增强安全性。长效会话更容易被劫持,而持久化令牌可以设计为一次性使用或与特定设备/IP 绑定,且不直接暴露会话 ID。 - **权衡**: 实现逻辑比简单延长会话略复杂,需要额外的数据表和验证逻辑。 ## 3. 数据模型 (Data Model) **决策**: 新建`persistent_tokens`表来存储令牌信息,以实现关注点分离。 [如果需要修改数据库,应在此处描述表结构变更。**推荐使用实体关系图 (ER Diagram) 来清晰地展示数据模型。**] ## 4. API 接口设计 (API Design) [对于每个新增或修改的 API 端点,都应提供详细的定义。] ### `[HTTP 方法] /api/path/to/endpoint` - **描述**: [清晰地描述此端点的功能和用途。] - **请求体 (Request Body)**: ```json { "key": "value_type", "another_key": "another_value_type" } ```
200 OKSet-Cookie。]{ "status": "success", "data": {} }
4xx/5xx{ "error": "A descriptive error message." }
verify_persistent_token:Cookie中提取remember_token。SHA-256对令牌进行哈希计算。persistent_tokens表中查找该哈希值。expires_at未过期,则为该user_id创建一个新的会话(session),并删除当前使用的持久化令牌(增强安全性,每次都换新令牌)。remember_token Cookie。remember_token Cookie 必须设置为HttpOnly以防止 XSS 攻击,设置为Secure以确保只在 HTTPS 下传输。50ms内完成。generate_secure_token()函数的随机性和唯一性。hash_token()函数的正确性。POST /api/auth/login接口在rememberMe为 true/false 时,响应头的Set-Cookie是否正确。verify_persistent_token中间件能否在有/无/无效/过期令牌的情况下正确处理。风险: 用户的物理设备被盗,导致账户被非授权访问。
persistent_tokens表中的所有记录。⚠️ 若在设计过程中发现需求存在缺口,模型应主动建议返回功能需求澄清阶段