在日常生活中有大量的扫描二维码的场景,最近正好看到这方面的视频与文章,了解一下二维码背后的技术和逻辑。
二维码最常用的场景之一就是通过手机端应用扫描 PC
或者 WEB
端的二维码,来登录同一个系统。
比如手机微信扫码登录 PC
端微信,手机淘宝扫码登录 PC
端淘宝。那么就让我们来看一下,二维码登录是怎么操作的!
二维码登录本质上也是一种登录认证方式。
常规的登录认证需要做的两件事:
通过扫描二维码,把手机端的账号信息传递到 PC 端,向系统证明我是谁。
手机端 APP 它是已经登录过的,就是说手机端是已经通过登录认证。只要扫码确认是这个手机且是这个账号操作的,其实就能间接证明我谁。
先认识一下二维码,在认识二维码之前我们先看一下一维码,又称为条形码:一维条码
所谓一维码,也就是条形码,超市里的条形码–这个相信大家都非常熟悉,条形码实际上就是一串数字,它上面存储了商品的序列号。
二维码其实与条形码类似,只不过它存储的不一定是数字,还可以是任何的字符串,你可以认为,它就是字符串的另外一种表现形式。
为了安全,手机端它是不会存储你的登录密码的。但是在日常使用过程中,我们应该会注意到,只有在你的应用下载下来后,第一次登录的时候,才需要进行一个账号密码的登录, 那之后呢 即使这个应用进程被杀掉,或者手机重启,都是不需要再次输入账号密码的,它可以自动登录。
基于 token
的认证机制:
const token = {
acountid:'账号ID',
deviceid:'登录的设备ID',
deviceType:'设备类型,如 iso,android,pc......',
}
然后服务端会生成一个 token,用它来映射数据结构,这个 token 其实就是一串有着特殊意义的字符串,它的意义就在于,通过它可以找到对应的账号与设备信息。
客户端不会也没必要保存你的密码,相反,它是保存了 token。可能有些同学会想,这个 token 这么重要,万一被别人知道了怎么办。实际上,知道了也没有影响, 因为设备信息是唯一的,只要你的设备信息别人不知道, 别人拿其他设备来访问,验证也是不通过的。
客户端登录的目的,就是获得属于自己的 token。
扫描二维码登录的一般步骤:
可以看到,二维码在中间有三个状态, 待扫描,已扫描待确认,已确认。
具体过程:
按二维码不同状态来看, 首先是等待扫描状态,用户打开 PC 端,切换到二维码登录界面时。
临时 token
是为了手机端在下一步操作时,可以用它作为凭证。以此确保扫码,登录两步操作是同一部手机端发出的。
我们从登陆的本质触发,探索二维码扫码登录是如何做到的
在这个过程中,我们先简单讲了两个前提知识,
token
的认证机制。然后我们以二维码状态为轴,分析了这背后的逻辑: 通过 token 认证机制与二维码状态变化来实现扫码登录.
需要指出的是,前面的讲的登录流程,它适用于同一个系统的 PC 端,WEB 端,移动端。
参考资料
分享计划
博客内容将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/
许可协议
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。