二维码扫码登录需要做的事情是去做登录认证,主要有两个:第一,告诉系统我是谁,可以通过账号,手机号,邮箱,用户名等唯一标识的形式;第二,向系统证明我是谁,可以通过密码,验证码,cookie,token的方式。
这个系统主要涉及到了三方,这里概述为三个角色:
分别是待登陆设备,已登录的扫码设备,还有服务端。
二维码本质上就是一个字符串string,可以自己拿一张二维码放到解析器中,最后会返回一个url,而这个url本质是就是字符串,关键部分就是QRcode部分的字符。
扫码过程中涉及到的不同状态的转变,过程如下,每个状态的变化都是有相应的事件去完成触发
1.【Pc端】进入扫码登录的页面,请求【服务端】以获取二维码id
2.【服务端】生成二维码id,(与请求设备绑定,)写入存储后返回(带有效期)
3.【Pc端】根据二维码id生成二维码图,展示
4.【移动端】扫码,解析出二维码id
5.【移动端】拿着移动端的token和二维码id请求【服务端】登录
6.【服务端】解析验证,绑定用户信息,返回【移动端】用于二次确认的临时token. 【Pc端】展示的二维码进入"待确认"状态
8.【移动端】拿着二维码id+临时token +移动端的token确认登录
9.【服务端】校验,如果通过,就修改二维码状态,返回Pc端登录的token.
10.【Pc端】成功登录