二维码扫码登录大概实现思路

二维码扫码登录的核心逻辑其实就是 “用已登录的手机给电脑授权”,具体分五步走:

  1. 电脑端生成二维码:用户打开网页时,后端生成一个唯一的二维码 ID(比如 UUID),存在 Redis 里,状态设为 “未扫描”,有效期 5 分钟左右。前端用这个 ID 生成二维码展示,同时每隔几秒查一次后端,看状态有没有变。
  2. 手机扫码:用户用已登录的 APP 扫这个二维码,就能读到里面的 ID,然后手机端带着这个 ID 和自己的登录凭证(比如 token)发给后端,说 “我扫了这个码”。
  3. 手机确认登录:后端收到后,先验证手机 token 是不是有效(确保手机确实登录着),然后把 Redis 里那个二维码 ID 的状态改成 “已确认”,并关联上用户信息(比如用户 ID)。
  4. 电脑端获取结果:电脑端一直在轮询,发现状态变成 “已确认”,就知道授权通过了。
  5. 完成登录:后端给电脑端生成一个登录凭证(比如 session 或 token),返回给前端,电脑端就登录成功了。

这里有几个关键点要注意:一是二维码必须有有效期,防止被复用;二是状态要在 Redis 里管理,查起来快;三是手机确认时一定要验证身份,不能随便授权;四是电脑端轮询可以用长轮询,减少请求次数。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计