跳到主要内容

用户登录注册功能

⚠️ 本文档由 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 新用户注册流程​

  1. 用户输入手机号
  2. 点击"获取验证码"按钮
  3. 系统发送验证码到用户手机
  4. 用户输入验证码
  5. 用户输入邀请码(邀请制阶段必填)
  6. 系统验证验证码和邀请码
  7. 验证通过后自动创建用户账号
  8. 返回用户信息和登录凭证(JWT token)
  9. 进入用户冷启动流程(问卷)

2.3.2 老用户登录流程​

  1. 用户输入手机号
  2. 点击"获取验证码"按钮
  3. 系统发送验证码到用户手机
  4. 用户输入验证码
  5. 系统验证验证码
  6. 验证通过后返回用户信息和登录凭证(JWT token)
  7. 进入应用首页

3. 用户场景​

场景1:新用户首次注册

  1. 用户打开App,进入登录页面
  2. 输入手机号,点击"获取验证码"
  3. 收到验证码短信,输入验证码
  4. 输入邀请码(邀请制阶段)
  5. 系统验证通过,自动创建账号
  6. 进入用户冷启动问卷页面

场景2:老用户登录

  1. 用户打开App,进入登录页面
  2. 输入手机号,点击"获取验证码"
  3. 收到验证码短信,输入验证码
  4. 系统验证通过,返回登录凭证
  5. 进入应用首页

场景3:验证码错误/过期

  1. 用户输入错误的验证码或验证码已过期
  2. 系统提示错误信息
  3. 用户可以选择重新获取验证码或重新输入

场景4:邀请码无效

  1. 新用户输入无效的邀请码(错误/已使用/已过期)
  2. 系统提示邀请码无效
  3. 用户需要输入有效的邀请码才能继续注册

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