用户登录注册功能
⚠️ 本文档由 AI 补充生成
生成时间:2026-01-09
生成原因:产品需求文档中隐含了手机号登录和邀请制注册的需求,但未明确描述
版本: 0.10
优先级: P0-T0
负责人: 待定
创建日期: 2026-01-09
1. 需求背景
用户在使用产品前需要完成登录/注册。考虑到产品处于早期阶段,采用邀请制注册方式,确保用户质量和社区氛围。登录方式采用手机号+验证码的方式,简化用户操作流程。
2. 功能描述
2.1 手机号登录/注册
2.1.1 登录方式
- 登录方式:手机号 + 验证码
- 自动注册:新用户首次登录时自动完成注册,无需额外注册步骤
- 手机号格式:支持国际格式(如 +8613812345678)或国内格式(如 13812345678)
2.1.2 验证码机制
- 验证码格式:6位数字
- 有效期:5-10分钟(可配置)
- 发送频率限制:同一手机号在1分钟内只能发送一次验证码
- 使用限制:每个验证码只能使用一次,使用后立即失效
2.1.3 错误处理
- 手机号格式错误:提示用户检查手机号格式
- 验证码错误:提示验证码错误,允许重新输入
- 验证码过期:提示验证码已过期,需要重新获取
- 发送频率过高:提示操作过于频繁,请稍后再试
- 网络错误:提示网络连接失败,请检查网络后重试
2.2 邀请制注册
2.2.1 邀请码机制
- 使用场景:社区处于早期阶段,采用邀请制注册
- 邀请码格式:32位字符串(如 INVITE20260109ABC)
- 有效期:从创建时间开始计算,有效期1个月
- 使用限制:
- 每个邀请码只能使用一次
- 使用后立即标记为已使用,不可重复使用
- 过期后不可使用
2.2.2 邀请码验证流程
- 验证时机:在用户首次注册时验证邀请码
- 验证方式:用户输入邀请码,系统验证有效性
- 验证结果:
- 有效:允许继续注册流程
- 无效:提示邀请码错误、已使用或已过期
2.2.3 邀请码管理(后台功能)
- 创建方式:由管理员通过后台系统创建邀请码
- 创建者记录:记录创建该邀请码的管理员用户ID
- 使用记录:记录使用该邀请码的用户ID和使用时间
2.3 登录流程
2.3.1 新用户注册流程
- 用户输入手机号
- 点击"获取验证码"按钮
- 系统发送验证码到用户手机
- 用户输入验证码
- 用户输入邀请码(邀请制阶段必填)
- 系统验证验证码和邀请码
- 验证通过后自动创建用户账号
- 返回用户信息和登录凭证(JWT token)
- 进入用户冷启动流程(问卷)
2.3.2 老用户登录流程
- 用户输入手机号
- 点击"获取验证码"按钮
- 系统发送验证码到用户手机
- 用户输入验证码
- 系统验证验证码
- 验证通过后返回用户信息和登录凭证(JWT token)
- 进入应用首页
3. 用户场景
场景1:新用户首次注册
- 用户打开App,进入登录页面
- 输入手机号,点击"获取验证码"
- 收到验证码短信,输入验证码
- 输入邀请码(邀请制阶段)
- 系统验证通过,自动创建账号
- 进入用户冷启动问卷页面
场景2:老用户登录
- 用户打开App,进入登录页面
- 输入手机号,点击"获取验证码"
- 收到验证码短信,输入验证码
- 系统验证通过,返回登录凭证
- 进入应用首页
场景3:验证码错误/过期
- 用户输入错误的验证码或验证码已过期
- 系统提示错误信息
- 用户可以选择重新获取验证码或重新输入
场景4:邀请码无效
- 新用户输入无效的邀请码(错误/已使用/已过期)
- 系统提示邀请码无效
- 用户需要输入有效的邀请码才能继续注册
4. 验收标准
4.1 手机号登录/注册
- 支持手机号格式验证(国际格式和国内格式)
- 验证码发送功能正常,能正确发送到用户手机
- 验证码有效期控制正确(5-10分钟)
- 验证码使用后立即失效
- 发送频率限制生效(1分钟内同一手机号只能发送一次)
- 新用户首次登录能自动创建账号
- 老用户登录能正确识别并返回用户信息
- 各种错误情况有对应的提示信息
4.2 邀请码机制
- 邀请码格式验证正确
- 邀请码有效期控制正确(1个月)
- 邀请码使用后立即标记为已使用
- 已使用的邀请码不能再次使用
- 过期的邀请码不能使用
- 邀请码使用记录正确(记录使用者ID和使用时间)
- 邀请制阶段,注册时必须提供有效的邀请码
4.3 安全性
- 验证码在传输和存储过程中加密
- 登录凭证(JWT token)安全生成和验证
- 防止验证码暴力破解(如限制尝试次数)
- 防止邀请码批量生成和滥用
5. 依赖项
- 短信服务:需要集成第三方短信服务商(如阿里云、腾讯云等)用于发送验证码
- JWT 认证:用于生成和验证用户登录凭证
- 数据库:存储用户信息、验证码记录、邀请码记录
- 后台管理系统:用于创建和管理邀请码(可选,初期可通过数据库直接创建)
6. 待定事项
- 短信服务商的具体选型(阿里云/腾讯云/其他)
- 验证码有效期具体时长(5分钟还是10分钟)
- 邀请码格式的具体规范(32位字符串的具体生成规则)
- 邀请制何时取消(何时开放公开注册)
- 是否需要支持其他登录方式(如微信登录等)
- 验证码尝试次数限制的具体数值
- 是否需要邀请码使用统计和分析功能
7. 技术实现说明
7.1 数据模型
- users 表:新增
phone_number字段(唯一索引) - verification_codes 表:存储验证码记录
- invitation_codes 表:存储邀请码信息
详细数据模型设计请参考架构文档:docs/docs/architecture/0.10/data-model.md
7.2 API 接口
- 发送验证码:
POST /api/v1/auth/send-code - 验证码登录/注册:
POST /api/v1/auth/login - 验证邀请码:
POST /api/v1/auth/verify-invitation(可选)
详细 API 设计请参考架构文档:docs/docs/architecture/0.10/api-design.md