扫码登陆原理

背景:信息时代,各种软件层出不穷,而对应用户来说,需要记住大量的用户名和密码,扫码登陆的出现,大大减轻了用户的负担,那么它的原理是什么?

 扫码登陆的原理

基本条件:拥有多端的产品,一般会有网页端,桌面端和移动端,大部分都是以移动端授权为主。(不讨论输入密码后点击登录的授权方式,原理类似)

操作过程:网页端和桌面端显示二维码,通过移动端(已经登录),扫码二维码授权登录

实现原理:

           登录方:网页端或者桌面端生成唯一的二维码信息,类似uuid的一段全局字符串,然后进入监听阶段,判断是否已经授权。

           授权方:通过移动端设备,扫描二维码,获取唯一uuid,让后绑定uuid和用户,发送给服务端。

           服务端:接受授权方的绑定请求,及时“推送“登录状态给登录方。

 

案例分析:

      以微信网页版登录为例,打开https://wx.qq.com/,出现二维码,此时已经生成了uuid

https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1547179019972

通过打开调试模式发现,此时已经进入了监听状态,目前采用的方式是长轮询的方式,也属于服务器推送的一种,接下来会详细讲解

通过截图发现,每隔一段时间,大致为25s,就会向服务器发送一个请求,如果服务器没有返回则会一直等到超时后,在发送下一个请求,这其实就是长轮询的实现方式。

通过分析返回结果,如果没有登录的时候返回的结果为: window.code=408;

移动端此时收到了请求为,界面为:

当点击登录后,此时把从从二维码等到的uuid和当前用户进行绑定,发送给服务端,进行登录授权。

刚才见到在登录端的监听请求,会在第一时间收到通知,返回结果为:

window.code=200;
window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=Ae1HJDjIXMn-GWbWVUBhonuF@qrticket_0&uuid=QfVg2uw4pg==&lang=zh_CN&scan=1547186001";

此处已经登录,然后同步消息,采用同样长训轮的方式,发送请求,及时获取消息:

https://webpush.wx.qq.com/cgi-bin/mmwebwx-bin/synccheck?r=1547186015634&skey=%40crypt_72b3c4bc_0af6e73eebc19bc55903121da344035d&sid=KXg93iTPTV95o0sm&uin=1742153543&deviceid=e648706275451094&synckey=1_685408624%7C2_685408843%7C3_685408780%7C11_685408833%7C201_1547186016%7C203_1547185679%7C1000_1547182922%7C1001_1547182996&_=1547185800306

未完待遇,在下片文章中会详细讲服务器推送的原理和实现方式,https://blog.csdn.net/sky1988818/article/details/86299900

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值