前言:多账户登陆互联网应用当中 , 我们的应用会使用多个第三方账号进行登录 , 比如:网易、微信、QQ等 , 我们把此称为多账户统一登陆 。通过这篇文章 , 我想阐释多账户登陆的技术方案细节 , 以及相应的表设计 , 流程设计 。我这里不会有具体代码实现细节 , 只要方案做的对 , 有思路 , 代码咋写都不会太烂 。
文章插图
1. 创业初期归结为创业初期是因为这个时候用户量比较少 , 甚至还没有接入上面所说的其他第三方的账户系统 , 只是自建的体系就可以满足 , 自建体系的话 , 目前常用的有如下解决方案:
用户名密码注册登陆
这种方式在很多初期网站建设会使用 , 先注册 , 再进行登录 , 在老一点的cms中都能找到这个影子 。流程图如下:
文章插图
流程说明:
- 前端将用户名、密码发送到服务器 , 服务器进行常规的判断 , 判断用户名、密码长度是否满足 , 用户名是否重复等条件 , 条件不通过直接返回对应错误码给到前端 , 这里密码字段 , 为了防止传输过程中被截胡 , 建议加密再上传 , 我们的传输密码默认都是会进行一个md5加密 , 然后记录到数据库再进行一层加密 , 就算是脱库也没事 , 密码不要明文存储 。
- 校验通过后 , 就将用户名密码写入数据库 , 并进行后面积分发放等操作 , 这里不展开 。
- 现在进行登录 , 前端将用户名 , 密码发送给到服务端 , 服务端首先会校验登录次数是否超过设置的阈值 , 如果超过只能继续等待被关小黑屋 。
- 如果未超过继续登录逻辑 , 判断用户名、密码是否正确 , 不正确密码则进行阈值的判断 , 如果超过则关小黑屋 , 记住小黑屋必须设置过期时间 , 要不然就会永久关上了 , 这个可以用redis的过期来做 。
- 登录成功后进行后续的一切后置逻辑 , 比如加积分等操作 。
短信业务非常成熟 , 使用手机号注册方便快捷 。其流程如下:
文章插图
流程说明:
- 首先输入手机号 , 然后发送到服务端 , 服务端将手机号记录在我们数据库中 , 然后生成随机验证码 , 并将手机号和验证码绑定到一个redis里面 , 然后记录过期时间 , 这个过期时间一般是10分钟左右 , 这就是我们一般手机验证码的有效期 。
- 手机接收到手机短信后 , 那么就在界面填写验证码发送服务端 , 服务端收到验证码后就会在redis里面查询到这个手机号对应的验证码 , 失败就返回错误码 。
- 成功后就进行登录操作 。
问: 那我要密码咋办?
答: 在后续产品里面增加一个手机号码密码补录的功能即可 , 这也是现在很常规的手法 , 但是现在移动互联网大爆炸时代 , 密码已经显得不是那么重要了 , 反正我从来记不住密码 , 如果手机号码能操作的App , 绝对不用密码来操作 。
2. 数据库设计表结构
文章插图
说明: 这里只是单纯说明需要用到的数据 , 没有扩展具体场景,这个表结构能够满足上面两个方案的设计 。
3. 引入第三方账户方案这里是以QQ-SDK的登录逻辑 , 我们先来一波时序图:
文章插图
实现思路:
- 客户端自己调起登录的界面 , 进行输入用户名、密码 , 这里的是第三方的用户名 , 密码 , 登录成功后 , 会返回access_token openid expire_in,这过程会使用到oauth2.0 , 不过在sdk里面进行内置回调获取了 , 后面我们会说明我们自身实现的oauth2.0
推荐阅读
- 教你如何实现Nginx防盗链
- 淘宝网店怎么设计 淘宝网店logo设计制作
- 茯茶与众不同含金花现代医学价值如何
- 什么是普洱知春茶 保健效果如何呢
- 如何判断是双向暗恋 双向暗恋错过是什么感受
- 淘宝店铺类目修改 淘宝店如何修改经营类目
- 什么是有机茶 如何辨别有机茶
- 购茶当心被忽悠 应如何辨别新茶和陈茶
- 如何分辨普洱干仓茶的品质
- 喝醉了如何解酒?快来收藏小妙招吧