Files
realizemultiagent/shared/specs/user-auth-spec.md
2026-04-02 00:59:42 +08:00

96 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 用户认证模块规格说明书
## 背景
用户使用产品前需要完成注册和登录,建立身份体系。
## 目标
- 3 分钟内完成注册并登录
- 安全的身份验证机制
- 支持多设备登录管理
## 功能列表
### F1: 用户注册
- 手机号 + 短信验证码注册
- 图形验证码校验(防机器人)
- 设置登录密码6位以上
### F2: 用户登录
- 手机号 + 密码登录
- 返回 JWT Token
### F3: 修改密码
- 通过短信验证码验证身份后修改
### F4: 多设备管理
- 查看已登录设备列表
- 强制下线指定设备
- 最多同时 3 个设备
## 接口设计
### POST /api/auth/send-code
发送短信验证码
- 入参: `{ phone: string, captchaKey: string, captchaCode: string }`
- 出参: `{ code: 0, message: "发送成功" }`
### POST /api/auth/register
注册
- 入参: `{ phone: string, code: string, password: string }`
- 出参: `{ code: 0, token: string, user: {...} }`
### POST /api/auth/login
登录
- 入参: `{ phone: string, password: string }`
- 出参: `{ code: 0, token: string, user: {...} }`
### POST /api/auth/change-password
修改密码
- 入参: `{ phone: string, code: string, newPassword: string }`
- 出参: `{ code: 0, message: "修改成功" }`
### GET /api/auth/devices
获取登录设备列表
- 入参: Header: `Authorization: Bearer {token}`
- 出参: `{ code: 0, devices: [...] }`
### DELETE /api/auth/devices/:id
下线指定设备
- 入参: Header: `Authorization: Bearer {token}`
- 出参: `{ code: 0, message: "已下线" }`
## 数据模型
### User
```javascript
{
id: string, // UUID
phone: string, // 手机号(唯一)
passwordHash: string, // 密码哈希
createdAt: Date,
updatedAt: Date
}
```
### Device
```javascript
{
id: string,
userId: string,
deviceName: string, // 如 "iPhone 14"
deviceToken: string, // 极光/FCM Token用于推送
lastActiveAt: Date,
createdAt: Date
}
```
## 验收标准
| ID | 标准 | 测试方式 |
|----|------|---------|
| V1 | 同一手机号不能重复注册 | 注册两次 |
| V2 | 验证码 5 分钟内有效 | 等待 6 分钟再验证 |
| V3 | 密码 6 位以下注册被拒绝 | 测试 5 位密码 |
| V4 | Token 过期后无法访问需要认证的接口 | 手动修改 Token |
| V5 | 第 4 个设备登录时最早的设备被自动踢出 | 登录 4 个设备 |