日常小科技
二维码扫码登录这个操作,在我们日常生活中频频出现,在办公室的你是不是每天都要登陆电脑微信,这背后的原理又是什么呢?
一般的使用场景:在手机设备已经登录的情况下,需要在电脑PC端应用或者网页进行登录。此时用手机的应用扫描PC端生成的一个二维码从而进行登录。
1
什么是二维码
二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。
二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。
2
过程解析
3
基于token的登陆机制
一般我们在手机上下载好应用之后,需要进行第一次登陆,可以试用账号-密码或者手机号-验证码登陆。
在登陆的时候,手机端不仅仅传送了账号密码,还传送了设备信息。此时服务端做了几件事情:
移动端在收到token后,将token保存在本地。在访问客户端的接口时,带上token。一般的,移动端也会带上设备信息进行访问,这样可以保证在token被泄露后,也不能够随意访问服务端。
4
二维码扫码登录原理
扫码登录可以分为三个阶段:等待扫描,已扫描待确认,已确认
1.等待扫描
首先,PC端的应用携带设备信息向服务端发起二维码请求。服务端生成唯一的二维码,并与设备信息进行绑定。在设置超时时长后,将二维码返回给PC端的应用。
PC端应用在收到二维码后进行展示,等待扫描。此时PC端应用会定时轮询二维码的状态,超时则会显示二维码失效。
2.已扫描待确认
移动端扫描二维码,获取二维码的ID。将token,二维码ID,设备信息发送给服务端。
服务端接收到请求后,将token和二维码ID关联。并重新生成一个临时token返回给移动端。
此时,PC端会轮询到二维码的状态变化,会显示到“已扫描,请确认”的状态。
3.已确认
移动端确认登陆,将收到的临时token携带信息发送到服务端。
服务端更改二维码状态为“已确认”,并生成token进行缓存或者持久化,返回给pc端。
此时,PC端应用会轮询到二维码的状态变为“登陆”,并且获取到了生成的token。此时就可以根据token访问服务端的内容了。
整个流程如上图所示。