现在的项目中,都会涉及到一个手机验证码获取功能
我们今天就来探讨下如何更好的设计好这个看似小的功能
给APP设计一个获取手机验证码的接口
根据业务逻辑,初步总结了可能会有以下业务场景 需要用到手机验证码的验证功能
大家来看下图片吧
login:登录
register:注册
chgpaypwd:支付密码修改
chgloginpwd:登陆密码修改
bindcard:绑定银行卡
unbindcard:解绑银行卡
oldSafePhone:旧安全手机号
newSafePhone:新的安全手机号
问题来了
接口在返回的时候 是否需要带上 刚才APP传递过来的手机号码呢?
一开始我觉得是不需要的
但是后来 项目经理说 这个需要
原因如下
不同的业务场景,验证的手机号码也不尽相同.
比如 我现在要修改下我的银行卡支付密码
这个时候就需要往 安全手机号 这一类的手机号码发送 验证码
而用户此时 可能存在 登录/常用 手机号 不是 安全手机号码的 可能
因此 需要在响应的时候带上 手机号码
同时 APP 在做 提示的时候 ,也可以清楚的告知客户 究竟发送到了那个手机
比如: 已经将验证码发送至139****2751 ,请注意查收
接口响应
弱弱的问一句
需要把服务器端的验证码 发送给 手机客户端,让手机客户端 验证下 这个验证码是否和用户输入一致吗?
我想说,你这个问题千万别问出口哦. 后果不可想象
到这里就结束了
一个符合产品需求,又可以满足安全,正常逻辑的 手机验证码功能接口
就搞定了.
当然在后端的逻辑支撑,你可能也需要了解下:
- 首先你需要一个手机短信验证码提供商 (这个百度一下,满大街)
- 通常情况下,你自己也是需要记录一下短信是否发送成功的(提供商的交互)
- 给客户端的验证码,你需要存储下来,并且是有一定的时效性的(利用redis)
- 学习和借鉴下微信的验证码,通常 你这一天,他都是那个同样的验证码(省钱?)
上述 文字,是我自己的一点想法,大家觉得不对的地方,请不吝赐教