实际体验过技术派的球友应该知道整个登录是基于微信公众号(个人号)来实现的,那么整套登录流程是怎么设计的呢?如果让我们自己来实现微信扫码登录该怎么去做呢?现在的方式有没有更好的替换方案呢?
这篇内容的风格和其他的文章可能不太一样,我们将以日常工作中一个功能相对完整的需求作为驱动,通过标准的方案设计来进行介绍说明。
方案设计
在产品的需求交底、评审过后,就到了我们研发人员出方案设计的时候。常见的方案设计有以下几个板块:
- 需求的相关理解及目标
- 研发的设计方案
- 相对完整的设计方案
- 前后端交互方式、接口 API 约定
- 测试要点
- 排期
- 验收标准
- 上线计划
当然我们这里并不会将所有的板块都填充上,重点会放在前面两点
1. 背景与目标
技术派作为一个文章分享社区,登录是基本的功能点;很多的功能都要求登录之后才能继续,比如发文、点赞、评论等。
2. 设计方案
基于登录这个需求场景,常见的登录方式有最经典的用户名/密码方式,也有近些年来广为普及的手机号/验证码的登录方式以及微信扫码登录。
2.1 用户名密码方式登录
用户名密码的登录方式,属于经典的实现方式,一般来讲,使用这种方式时,除了基础的登录之外,还需要搭配用户注册、忘记密码、修改密码等功能。
如上图,分别给出了注册、登录、忘记密码重置的流程示意图。
基于这种方案,我们的用户表中需要考虑下面几个关键信息
- userName: 用于登录的用户名
- password: 登录密码,注意 db 中不直接存储源码,常见的方案是将用户上传的密码 加盐之后计算 MD5 保存
- email/phone: 主要用于忘记密码时,向用户发送用于修改密码的验证码 or 重置密码的临时 url(主要的目的是确定这个账号真的是 xxx 在操作)
整个方案实现下来中规中矩,重点注意的关键点无非两个:
- 密码注意不要明文存储
- 忘记密码时,需要给用户发送验证码
优点
- 用户注册成本低
- 流程清晰简单、易于理解
缺点
- 接口多,流程多(除了登录还有注册、忘记密码、修改密码等操作),实现工作量相对较大
- 用户容易忘记密码,安全性没有其他的高
- 手机号发送验证码时要花钱;邮箱发送验证码时容易被当作垃圾邮件拉黑
2.2 验证码登录
验证码的登录方式对用户而言体验是比较友好的,也不用记密码,当然也不用担心忘记密码,我们一般说的验证码登录方式专指手机+短信验证码的登录方式,一般的操作流程如下:
从上面的流程示意图可以看出,用户表中核心存储手机号/邮箱即可:
- phone: 采用手机号验证码的方式,存手机号即可
- email: 采用邮箱接收验证码的方式,存邮箱即可
动作有两步:
- 用户首先输入手机号/邮箱,然后请
回复