二维码骚一骚,登陆原理
作者:Vic ,分类:各种原理 发布于 2019-08-23 18:58:41.0

最近在入门ios的app,想着兴趣实现一下使用app扫一扫二维码登陆的原理,如果自己试着按这个需求做,在不参考任何其他主流扫码登陆的原理的情况下独立完成,也不是不可以,只是完成后有没有逻辑缺陷的问题,当然大家用的才是经过考验的(其实就是想学习大牛们的设计原理),在网上找了很多扫二维码登陆原理的文章,有写的复杂的10多个环节描述的很清楚,也有描述的简单的三个角度让你看明白,我找了个简答易理解的记下.

画个原理图

分析下图详细的环节. 总结如下:

  • 1. 首先浏览器角度:浏览器端展示登陆页面,请求服务器获取二维码.
  • 2.服务器收到获取二维码的请求,生成唯一且加密过后的key(示例:`adsfsdfsd`) ,以key作为键保存至缓存或者数据库(设置时效),使用key加入到生成二维码图片的url参数中,把key和二维码图片返回到客户端的浏览器,用户就能看见二维码图片了,然后开启每隔1至2秒的时间轮训服务器,使用key获取value值是否是 不为null的 用户信息.
  • 3.app扫描二维码得出url,解析出key,请求服务器是否存在该key,不存在就意味着key和二维码已经过期,存在则在app端显示一个`确定登录`的按钮,点击该按钮,携带key和app中登陆的用户信息作为参数 请求服务器,服务器收到请求,根据key把用户信息value存储到缓存或者数据库.
  • 4.第三步的轮训就自然而然根据key检验到用户登录了,跳转到登录成功的页面就OK了.
后述

其实就把key和用户信息以键值对的方式放在一个有时效性的缓存或者数据库,这样就形成了临时存储的作用,没有露点,任何用户扫码都完整实现了一对一的存储,一旦登录二维码就设置过期,key和value(用户信息)不可更改,直至会话过期.....nice