# Agent-Auth 上下文信息 ## 重要规划文档 在开始开发前,请确保你已经理解以下关键文档: - `../../协作机制设计.md` - 特别是全局上下文(GlobalContext)和服务间调用机制 - `../../模块分工指南.md` - 了解Auth模块的职责边界(第2.1节) - `../../开发规范文档.md` - 编码标准和API设计规范 - `../../统一基础代码.md` - 可复用的代码模板 ## 项目位置 - 项目根目录: `/Users/nongjun/Desktop/Ai公司/本地开发与测试/kaopeilian-backend/` - 你的工作目录: `app/api/v1/auth.py`, `app/core/security.py`, `app/services/auth_service.py` ## 重要依赖文件 ### 1. 基础模型 (`app/models/base.py`) 已提供BaseModel, SoftDeleteMixin, AuditMixin等基类 ### 2. 用户模型 (`app/models/user.py`) - 需要你创建 ```python from sqlalchemy import Column, String, Boolean, Enum from app.models.base import BaseModel, AuditMixin class User(BaseModel, AuditMixin): __tablename__ = "users" username = Column(String(50), unique=True, nullable=False, index=True) email = Column(String(100), unique=True, nullable=False, index=True) password_hash = Column(String(200), nullable=False) is_active = Column(Boolean, default=True) is_superuser = Column(Boolean, default=False) role = Column(String(20), default="trainee") # trainee, manager, admin ``` ### 3. 基础Schema (`app/schemas/base.py`) 已提供BaseSchema, ResponseModel, ErrorResponse等基类 ### 4. 异常处理 (`app/core/exceptions.py`) 已定义所有标准异常类 ### 5. 日志系统 (`app/core/logger.py`) 已配置结构化日志 ### 6. 配置管理 (`app/config/settings.py`) 关键配置项: - SECRET_KEY - JWT密钥 - ALGORITHM - JWT算法(默认HS256) - ACCESS_TOKEN_EXPIRE_MINUTES - 访问Token过期时间(默认30分钟) - REFRESH_TOKEN_EXPIRE_DAYS - 刷新Token过期时间(默认7天) ## 数据库表结构 ```sql CREATE TABLE users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, password_hash VARCHAR(200) NOT NULL, is_active BOOLEAN DEFAULT TRUE, is_superuser BOOLEAN DEFAULT FALSE, role VARCHAR(20) DEFAULT 'trainee', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, created_by BIGINT, updated_by BIGINT, INDEX idx_username (username), INDEX idx_email (email) ); ``` ## 环境变量 ```bash # .env 文件中的认证相关配置 SECRET_KEY="your-secret-key-here-must-be-at-least-32-chars" ALGORITHM="HS256" ACCESS_TOKEN_EXPIRE_MINUTES=30 REFRESH_TOKEN_EXPIRE_DAYS=7 ``` ## 测试账号 用于开发测试的默认账号: - 超级管理员: superadmin / Superadmin123! - 系统管理员: admin / Admin123! - 测试学员: testuser / TestPass123! ## 错误码约定 - 1001: 用户名或密码错误 - 1002: 账号已被禁用 - 1003: Token无效或已过期 - 1004: 权限不足 - 1005: 用户名已存在 - 1006: 邮箱已存在 ## 关键流程 ### 登录流程 1. 接收用户名和密码 2. 验证用户身份 3. 检查账号状态 4. 生成访问Token和刷新Token 5. 返回Token信息 ### 注册流程 1. 验证输入数据 2. 检查用户名和邮箱唯一性 3. 加密密码 4. 创建用户记录 5. 自动登录并返回Token ### Token刷新流程 1. 验证刷新Token 2. 检查Token是否在黑名单 3. 生成新的访问Token 4. 可选:轮换刷新Token ## 安全最佳实践 1. 使用bcrypt加密密码,cost factor设为12 2. JWT Token使用RS256算法(生产环境) 3. 实现Token黑名单机制(使用Redis) 4. 登录失败5次锁定账号15分钟 5. 敏感操作记录审计日志