系统流程图栏目 ·

用户注册流程图怎么画:含短信验证码/密码找回/异常分支模板

讲清用户注册全链路流程图的画法:从主流程、短信/邮箱验证、风控与限流、密码找回到异常分支与交付规范,附文本生成流程图工具入口与导出要点。

注册流程图不是“画得好看”就行,它是产品、研发、风控、客服、运营之间的契约:哪些输入是必填、哪些状态会落库、失败后用户看到什么、系统会不会触发短信、是否要封禁/冷却、哪些事件需要埋点——这些都必须在图里说清楚。

这篇文章按“能交付给研发”的标准来讲:你会得到一套画法(节点规范 + 判断条件写法 + 异常分支清单 + 自检表),把注册/登录/找回这些容易被忽略的边角也纳入。

需要快速把文字变成一张整洁流程图时,可以用这个在线工具(文本输入自动排版,可导出 PNG 或 draw.io):


1)先定边界:你画的是“注册”,还是“账号体系”

很多人画注册流程图会画着画着就变成“账号体系大杂烩”,最后谁也用不了。建议你在开画前写 3 行边界说明(写在图标题旁或图注里):

  • 目标:让新用户完成账号创建并可登录使用(或完成绑定并获得可用身份)。
  • 适用端:Web/H5/App/小程序(不同端的验证码/系统能力差异很大)。
  • 身份类型:手机号、邮箱、用户名、第三方 OAuth(微信/Apple/Google)、企业 SSO;是否允许一个人多个账号、一个账号多身份。

经验:如果你发现自己在图里频繁出现“绑定/解绑/改手机号/合并账号”,那你画的就不只是注册,而是“账号生命周期”。这类图建议拆成两张:

  • A 图:注册与首次登录(入门图)
  • B 图:账号管理与身份变更(维护图)

2)统一语言:节点命名、状态命名、返回码不要混着用

一个能落地的注册流程图,至少要满足“看图就能写接口/写用例”。因此需要先统一语言。

2.1 节点命名规范(推荐)

用“动词 + 对象 + 关键条件”命名,避免空泛词:

  • ✅ 发送短信验证码(手机号)
  • ✅ 校验短信验证码(手机号 + code + 会话标识)
  • ✅ 创建用户(手机号/邮箱 + 密码哈希)
  • ✅ 生成登录态(token/session)
  • ❌ 校验(太泛)
  • ❌ 注册成功(这更像“状态”,不是动作)

2.2 状态命名建议

注册过程中常见的状态至少有 4 类(很多缺陷都出在状态没讲清):

  1. 人机/风控状态:需要图形验证码/滑块;是否命中黑名单;是否触发冷却
  2. 验证状态:验证码未发送/已发送/已验证/已过期/已用尽
  3. 账号状态:未创建/已创建未激活/已激活/冻结/注销中
  4. 会话状态:未登录/已登录/登录失效/刷新中

建议在图里明确哪些状态写数据库(持久化),哪些只存在于缓存/会话(临时态)。


3)搭主干:注册主流程建议压缩成 7~9 个关键节点

主流程要“短、准、可追溯”。把最核心的闭环画出来,再加异常分支。

一个通用注册主干通常包含:

  1. 用户提交注册意图(手机号/邮箱/第三方)
  2. 系统做基础校验(格式、必填、地区码、弱密码策略)
  3. 触发风控/人机校验(按策略:必做/命中才做)
  4. 发送验证码(短信/邮件)或跳转第三方授权
  5. 校验验证码/授权回调
  6. 创建用户/绑定身份(含幂等)
  7. 生成登录态(token/session)
  8. 返回结果并进入新手引导(可选)
  9. 关键事件埋点/审计记录

“幂等”一定要在图上体现:同一手机号重复点注册/重复回调时,系统应返回一致结果而不是创建多个用户。


4)短信验证码怎么画才不漏:把“次数、时间、渠道、场景”写进判断条件

短信验证码流程最容易漏掉的是限制条件。你可以把它拆成两条线:

  • 发送线:发不发得出去(次数/频率/通道/风控/地区/模板)
  • 校验线:验不验得通过(过期/错误次数/是否已使用/是否匹配会话)

4.1 发送验证码:推荐最少 6 个判断

  • 是否命中图形验证码/滑块(人机)
  • 手机号格式与区号是否允许(合规/运营策略)
  • 是否在冷却期(例如 60 秒内不可重复发送)
  • 当日发送次数是否超限(例如 10 次/天/手机号)
  • 通道是否可用(供应商降级、容灾切换)
  • 是否需要“场景绑定”(注册/登录/找回密码必须区分)

在流程图上,把这些判断放在“发送”节点前,避免把风控逻辑散落在图的角落。

4.2 校验验证码:推荐最少 5 个判断

  • code 是否匹配(同时校验手机号/场景/会话标识)
  • 是否过期(例如 5 分钟)
  • 错误次数是否超限(例如 5 次锁定 10 分钟)
  • 是否已使用(一次性)
  • 是否跨端/跨设备(是否允许在 A 端发,B 端验)

很多“安全事故”不是验证码被猜中,而是“场景没绑定”导致注册验证码能拿去走找回密码。


5)密码找回/重置:别把它塞进注册图里,但要把分支入口讲清

你的文章标题里包含“密码找回/异常分支”,但在画图时建议这样处理:

  • 在注册流程图中只画:找回密码入口如何到达(例如“账号已存在 → 引导登录/找回密码”)
  • 找回密码单独一张图:从验证身份到设置新密码的完整闭环

注册图里至少要表达清楚:

  • 账号已存在时,前端如何提示(不泄露信息 vs 体验)
  • 是否允许“用验证码直接登录”(免密登录),若允许,注册与登录的边界如何处理
  • 找回密码是否必须二次验证(邮箱/短信 + 风控)

在判断节点上建议使用“可测试”的条件写法:

  • “手机号已注册?”(后端可查询)
  • “是否允许免密登录?”(配置开关)
  • “是否需要强制设置密码?”(产品策略)

6)异常分支清单:按“用户可理解 + 研发可处理”两条线来补

异常分支不是越多越好,而是要覆盖“高频 + 高风险 + 高成本”的情况。建议你按下面分类补齐,每一类至少选 1~2 个典型分支画出来,其余写在图注或需求说明里。

6.1 高频异常(强烈建议画在图里)

  • 验证码错误/过期
  • 发送过于频繁/次数超限
  • 手机号/邮箱格式不合法
  • 密码不符合策略(长度、复杂度、常见弱密码)
  • 账号已存在

6.2 风险异常(建议画在图里或单独标注“风控层”)

  • 命中黑名单/高风险设备
  • IP/设备异常(异地、代理、批量注册特征)
  • 短信通道异常需要降级(例如改为语音/邮件/稍后再试)

6.3 系统异常(至少要在图上给出“统一兜底”)

  • 第三方短信供应商超时/失败
  • 数据库/缓存不可用
  • OAuth 回调失败或 state 不匹配

图上可以用一个“系统异常 → 返回统一错误码 + 记录告警 + 引导重试/稍后再试”的兜底节点,把低概率错误收敛,避免主图爆炸。


7)反例:注册流程图最常见的 8 个坑(你画完就对照删雷)

  1. 只画 UI,不画系统动作:例如“输入手机号 → 下一步 → 成功”,研发不知道哪里发短信、哪里落库。
  2. 判断条件写成情绪词:例如“验证码正确/不正确”还不够,至少要写“是否过期/错误次数是否超限”。
  3. 不区分场景:注册/登录/找回共用一套验证码,不在图上写“scene”,后面必出洞。
  4. 没有幂等:重复提交/重复回调会创建重复账号或重复发短信。
  5. 没有冷却和次数限制:你不画,后端很容易忘;忘了就等着被刷。
  6. 把风控写成一个黑盒框:至少要写清“触发条件”和“输出结果”(通过/需二次验证/拒绝)。
  7. 成功后没有“生成登录态”的节点:导致“注册成功但未登录”的责任不清。
  8. 没有埋点与审计:出了问题无法复盘(尤其是短信与风控相关)。

8)如何把图画到“可交付”:三层视角(用户、前端、后端/服务)

如果你经常跟研发对不齐,通常是因为图只站在“用户操作”的视角。建议用三层来组织:

  • 用户层:输入、点击、看到的提示
  • 客户端层:表单校验、发起 API、处理错误码、跳转
  • 服务层:风控、短信、账号服务、会话服务、数据落库

在工具里你可以用泳道(swimlane),也可以用同一张图里不同颜色/标注来区分。

8.1 最小交付物清单

你把这几样补齐,研发基本能开干:

  • API 列表:sendCode、verifyCode、register、oauthCallback、resetPassword(若涉及)
  • 关键字段:phone/email、countryCode、scene、deviceId、captchaToken、inviteCode(若有)
  • 错误码/提示语:哪些提示可暴露“账号是否存在”,哪些需要模糊化
  • 风控策略:触发条件 + 结果(通过/拒绝/二次验证/冷却)
  • 埋点:发送验证码成功/失败、校验失败原因、注册成功、注册失败原因

9)只给 1 个“小例子”:用文本先写清楚主干(然后再自动排版)

你不需要在这里复制一大堆可套用文本;真正有用的是把“节点 + 判断”写成可读结构。下面给一个极小的例子(示意主干 + 两个异常),便于你理解如何表达:

  • 开始:用户选择「手机号注册」
  • 判断:手机号格式是否正确?否 → 提示“号码格式错误” → 结束
  • 动作:触发风控校验(输出:通过/需人机/拒绝)
  • 判断:风控是否拒绝?是 → 提示“操作过于频繁,请稍后再试” → 结束
  • 动作:发送短信验证码
  • 判断:短信发送是否成功?否 → 提示“发送失败,稍后再试” → 结束
  • 动作:用户输入验证码 → 校验验证码
  • 判断:验证码是否通过且未过期?否 → 提示“验证码错误或已过期” → 返回输入
  • 动作:创建用户(幂等)→ 生成登录态 → 返回“注册成功”

想把这段文字直接变成流程图并导出交付,可以用:


10)FAQ:画注册流程图时经常被问到的问题

Q1:注册一定要短信验证码吗?

不一定。常见方案有:

  • 邮箱验证(适合 Web/工具类产品)
  • 第三方登录(降低门槛,但要处理合并账号/解绑)
  • 免密登录(短信/邮箱 link),再引导设置密码

图上关键是:不同验证方式的“安全强度”和“失败路径”要清楚

Q2:提示“该手机号已注册”会不会泄露信息?

会。是否提示取决于你的风险偏好。

  • 风险敏感产品:建议统一提示“账号或密码错误/请登录或找回”,避免枚举
  • 体验优先产品:可以明确提示,但要配合限流/风控

在流程图里你可以用“返回提示语策略(明确/模糊)”作为一个配置节点。

Q3:验证码在 A 设备发,B 设备验,允许吗?

看你是否做了会话绑定。

  • 不绑定:体验更顺,但被劫持风险更高
  • 绑定 deviceId/sessionId:安全更高,但会增加“换机/跨端”的失败率

流程图里建议把“是否允许跨端校验”写成一个判断节点或策略注释。

Q4:注册成功后要不要强制完善资料?

建议分层:

  • 必填:能影响账号安全/合规的(例如设置密码、同意协议)
  • 非必填:昵称/头像/偏好,放到新手引导里

不要把“完善资料”塞进注册主干,否则注册成功率会下降且图会变得臃肿。

Q5:怎么证明我画的图能落地?

用“可测试性”检验:

  • 每个判断条件都能被构造输入触发(可写用例)
  • 每个异常都能对应到一个明确的处理动作(提示/重试/降级/告警)
  • 每个关键动作都有日志或埋点(可回溯)

11)交付与导出:PNG / draw.io 给谁用、怎么给

  • 给评审/汇报:PNG(清晰、不可编辑,适合放文档)
  • 给研发/后续维护:draw.io(可继续改)

导出前检查:

  • 画布比例:尽量横向,避免手机端一屏看不完
  • 字体与字号:保证缩放到 70% 仍可读
  • 连线方向:主流程尽量保持从左到右或从上到下
  • 颜色约束:用颜色表达“层次/泳道”,不要用颜色表达“好/坏”

如果你想省掉手工排版时间,建议用“先写清结构 → 自动排版 → 再微调”的方式,会比纯手动画更稳定。


12)一页自检表:你这张注册流程图是否“合格”

在交付前用 2 分钟勾一遍:

  • 主流程不超过 9 个关键节点,能一眼看懂
  • 明确了身份类型(手机号/邮箱/第三方)以及是否允许多身份
  • 验证码流程写清楚:冷却、次数、过期、错误次数、是否一次性
  • 账号已存在时的分支有明确引导(登录/找回/绑定)
  • 有幂等策略(重复提交/重复回调不会创建重复用户)
  • 风控输出明确(通过/二次验证/拒绝)且有兜底
  • 成功后有“生成登录态/进入产品”的节点
  • 关键日志/埋点/审计点已标注

13)进阶补充:邀请注册、渠道归因与反作弊的“图外约束”

如果你的产品有拉新/投放,注册流程往往还会附带“邀请关系”和“渠道归因”。这部分不一定要塞进主流程(否则主图会变得很长),但建议在图注或附页写清这些约束,否则上线后数据会对不上。

  • 邀请码/邀请链接:
    • 是否允许注册后补填?允许的话补填的时限与风控策略是什么?
    • 邀请关系写库时机:注册成功即写?还是首单/首活后写?
    • 幂等:同一用户重复带不同邀请码请求时,以哪个为准?
  • 渠道归因(utm/渠道号):
    • 归因字段存哪里(用户表/事件表/独立归因表)
    • 归因有效期:首次触达 vs 最后触达,窗口期 7/30 天等
  • 反作弊:
    • 同设备多账号/同手机号多设备的策略
    • 是否需要“注册后冷却”限制关键动作(例如发帖、领券、下单)

把这些写清楚,你的注册流程图在“增长场景”里才算真正可用。


14)最后再给一次入口:用文本快速生成并导出

你可以先把注册流程写成结构化文字,再交给工具自动排版,最后微调泳道/颜色即可交付:


常见分支 1:短信验证码的“现实世界”到底有哪些坑?

注册/登录的验证码流程之所以容易写得不完整,是因为真实世界里验证码不是“发了就能收到”。

你可以把短信验证码的分支按下面 5 类考虑(写进流程图会明显更像样):

  1. 发送频控:短时间内重复点击“发送验证码”
    • 处理:提示倒计时;超过阈值触发图形验证码/冷却时间
  2. 验证码过期:用户切出去几分钟再回来
    • 处理:提示过期并允许重新发送
  3. 验证码错误:输入错/复制粘贴带空格
    • 处理:提示错误;错误次数达到阈值转安全校验
  4. 短信未收到:运营商延迟/拦截
    • 处理:提供“语音验证码/重新发送/联系客服”路径
  5. 号码不可用:空号/停机/格式不合法
    • 处理:直接提示并回到输入手机号

这些分支不一定都要画,但至少要覆盖其中 2~3 个,否则“流程图像教科书”。


常见分支 2:重复注册/账号合并怎么画?

很多项目会遇到:用户输入的手机号/邮箱已经存在。

这时常见策略有两类:

  • 阻止注册:提示“已注册,请直接登录/找回密码”
  • 引导合并:如果用户之前用第三方登录创建过账号,允许绑定手机号并合并

流程图里建议把它画成一个判断:

  • 账号标识(手机号/邮箱)是否已存在?
    • 否 → 创建账号
    • 是 → 引导登录/找回密码(或进入合并流程)

不要把“已存在”当成一个纯提示节点就结束,这会丢掉关键业务路径。


常见分支 3:密码设置与强度校验(学生作业也常被问)

如果你的注册流程包含“设置密码”,流程图至少要体现:

  • 密码强度校验(长度/字符类型)
  • 两次输入一致性
  • 是否允许弱密码(通常不允许)

这样画出来更符合“可交付、可测试”。


一个更接近真实产品的“注册主流程”拆解(文字版)

你可以把注册主流程按下面 9 步写清楚,再去画图:

  1. 输入手机号/邮箱
  2. 校验格式
  3. 判断是否已注册
  4. 发送验证码(触发频控)
  5. 输入验证码
  6. 校验验证码(错误次数限制)
  7. 设置密码(可选)
  8. 创建账号
  9. 登录态建立/跳转首页

然后再把异常分支补上:

  • 未收到短信
  • 验证码过期
  • 已注册
  • 密码不合规

你会发现:流程图“专业不专业”,往往就差这些异常分支。


FAQ

Q1:注册流程图要画到多细?

如果只是课堂作业/概念解释,画到“输入→验证→创建→完成”就够。

如果是项目交付/需求评审,至少把 3 类异常补上:

  • 验证码错误/过期
  • 已注册
  • 频控/安全校验

Q2:短信验证码和邮箱验证码流程一样吗?

主干类似,但邮箱常见的“验证链接”会引入一个新分支:

  • 点击验证链接成功/失败(链接过期/已使用)

这个分支最好独立画出来。


如果你想把上面的“文字步骤+异常分支”快速排版成图,再导出 PNG/draw.io 交付,可以用: