跳到主要内容

二维码扫码登录原理

· 阅读需 3 分钟

扫码登录现在非常常见,比如支付宝、微信等 PC 端的登录,不止如此,几乎所有的网站都支持扫码登录,本篇文章讲解扫码登录这一功能背后的实现逻辑

什么是二维码

二维码,又称二维条码,常见的二维码为 QR(Quick Response) Code。二维码能承载的信息要比条形码丰富的多,可以存储数字、字符串、图片、文件等。这是近些年来非常的流行的一种编码方式

移动端基于 token 的认证机制

基于 token 的认证机制与常用的账号密码认证方式有较大不同,安全系数比账号密码要高

流程图如下:

20251011230421

二维码扫码登录原理

流程图如下:

20251011230447

扫码登录分为三个阶段:待扫码、已扫描待确认、已确认

待扫码阶段

1~5阶段为待扫码阶段,即生成二维码阶段,是 PC 端跟服务端的交互

首先 PC 端携带设备信息跟服务端发起生成二维码请求,服务端会生成唯一的二维码 ID(可以理解为 UUID),并且将二维码 ID与 PC 设备信息关联起来

PC 端接受到二维码 ID 后,将二维码 ID 以二维码的形式展示,等待移动端扫码。这时,PC 端会启动一个定时器,轮询的查询二维码的最新状态。如果一段时间后二维码没有被扫描,二维码就会过期失效

已扫码待确认阶段

流程图中6~10 阶段

首先移动端扫描二维码,获取二维码 ID,然后将手机端的信息凭证(token)和二维码 ID 作为参数发送给服务端,这时手机端一定是登录的,不存在未登录的情况

服务端接受请求后,会将 token 与二维码 ID 相关联,为什么需要关联呢?一个是为了知道谁扫的这个码,另一个则是为了将 PC 端和登录端的登录状态“联动”。通过这个关联就可以做到:凡是由这个二维码派生出来的 PC 登录状态,都可以被统一撤销。也就是移动端退出的时候,PC 也会跟着退出登录

已确认

流程图中 11~15 阶段

这是扫码登录的最后阶段,移动端携带上一步骤中获得的临时 token,确认登录。服务端校验完成后,会更新二维码的状态,并且给 PC 端生成一个正式 token,后续 PC 端会持有这个凭证来访问服务端

PC 端的定时器,轮询到二维码状态为登录状态,并且获取到了生成的 token,完成登录,后续访问都是基于 token 完成

代码示例

Scan Login Demo

Loading Comments...