作者:程序员自由之路

https://www.cnblogs.com/54chensongxia/p/12530268.html

随着微信的普及,我们可以通过微信扫描设备二维码来实现IoT物联网场景中设备激活和绑定,今天我们就给大家介绍一下微信扫码登陆的原理。

1.网页端获取登陆二维码

要实现网页版的扫码登陆,用户必须先要请求一个登陆的二维码。Web端的服务器收到用户申请登陆二维码的请求后,会随机生成一个uuid(这个uuid作为页面的唯一标识符),并且会将这个uuid当做一个键值对的key存入后台Redis。存入Redis的这个键值对的value是什么我们待会再说。

需要注意的是存入Redis的键值对必须设置一个过期时间,不然的话拿着这个uuid登陆一次后就一直处于登陆状态了。

当浏览器端拿到Web服务端返回的二维码信息后,解析其中的uuid,并拿这个uuid不断去后台轮询是否已经登陆成功。如果后台已经登陆成功,Web端就自动跳转到登陆成功页面。不然的话会一直轮询,直到二维码失效(这里我们发现给二维码设置有效时间真的很有必要,如果二维码没有有效时间的话,会不断的轮询后台,给后台造成很大的压力)。

那么上面的关键点是Web端服务器是怎么判断用户是否已经扫码登陆成功过的呢?请看下面的步骤。

2.手机端将用户ID传给后台Server,匹配登陆账号

用户请求到二维码后,就开始拿出手机,打开相应的App扫描二维码。扫描过程中手机会将uuid和手机端登陆后获得的token信息一起提交到手机端服务器。

手机端服务器会先拿token信息判断这个用户是否合法,是否已经正常登陆。如果判断已经正常登陆,那么会将这个用户的userId和提交过来的uuid当做一个键值对(uudi-userId)存入Redis。这边回答了步骤一中留下的问题。

简单来讲手机端做的工作就这么多。让我们继续回到Web端。

3.Web页面轮询后台API,刷新登陆态

二维码登陆页会不停的轮询是否登陆成功。这边的依据就是Redis中存在uuid-userId键值对。如果这个键值对已经存在,说明手机端已经扫码登陆过。

Web端服务器一旦判断到手机端已经扫码登陆过,就可以拿着userId进行登陆。并将必要的用户信息和token信息返回Web前端。至此Web端登陆成功。

实际开发过程中还会有安全问题等,需要我们结合业务场景实现。

微信扫描二维码登陆的实现原理相关推荐

  1. 微信扫描二维码登陆的原理

    作者:吕十田 链接:https://www.zhihu.com/question/20368066/answer/23828176 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  2. iOS开发 - 微信扫描二维码登录网页的原理

    转自: http://daily.zhihu.com/story/3783725 我个人开发过程一般是和产品说,『你们提业务要求.交互方式.性能要求等就好,技术方案我们会综合开发时间.系统架构等因素考 ...

  3. 实习记录(H5页面)微信扫描二维码登陆注册,随后跳转浏览器。实现

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.微信跳转至浏览器,按钮样式与触发弹窗改变? 2.安卓与ios的下载***app 3.解析url,获取地址栏携带的参数 4 ...

  4. HTML 5 手机扫描二维码登陆网页

    首先声明我不是专业做前端的,只是一个java开发者,最近要做一个手机版的网站,但是需求要做类似于微信,扫描网页上的二维码登陆网页版微信,以当时认为这东西必须要APP才能支持,因为所有扫描二维码都是必须 ...

  5. App 扫描二维码登陆网站

    App 扫描二维码登陆网站 +-----------+-----------+-----------+ | App | Web | Server | +-----------+-----------+ ...

  6. 微信扫描二维码和浏览器扫描二维码 ios和Android 分别进入不用的提示页面

    实现微信扫描二维码和浏览器扫描二维码 ios和Android 分别进入不用的提示页面 而进入商城下载该项目 详情地址:gitee.com/DuJiaHui123- 1.创建完之后 替换文件里面的ios ...

  7. 微信扫描二维码在内置浏览器打不开文件的下载链接怎么办?哪些api接口可以解决...

    有哪些api接口可以实现微信扫描二维码在内置浏览器打开文件的下载链接? 经常看到贴吧上有人吐槽微信的检测系统太严格了,动不动就拦截第三方链接.怎么才能解决,怎么才能避免等等一系列的问题.因为平时我也会 ...

  8. 微信扫描二维码-电脑上网

    展视网北京科技有限公司--cuidc 由于 wifi 成为人们生活中不可或缺的一部分,店家 wifi 免费上网的招数也就日益增多. 今天我们介绍一种破解<微信扫描二维码上网>的招数,此招数 ...

  9. 使用电脑微信扫描二维码

    使用电脑微信扫描二维码 将二维码图片发送至文件传输助手 在与文件传输助手的聊天界面点开图片,右键,点击识别图中二维码即可 扫描完成.

最新文章

  1. 笑了,面试官问我知不知道异步编程的Future。
  2. Alpha 冲刺 (8/10)
  3. 架构师之路 — 业务架构 — Overview
  4. 如何控制参照PR作PO时,PO的数量不能超过PR的数量
  5. PCA与SVD的关系
  6. 【NLP实战】Task2:特征处理
  7. 第一次小班课(英语)
  8. python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法
  9. Deep Belief Networks
  10. 低功耗设计——功耗估算
  11. vue delete删除json数组_vue面试题总结(二)
  12. linux svn 客户端安装配置
  13. 安装Jenkins后 启动时失败的问题解决
  14. IP子网编址和无类域路由CIDR
  15. Spring注解——同一接口有多个实现类,如何注入
  16. sql聚合函数及分组的注意事项
  17. 理解引用 SqList L 与 SqList L 的区别
  18. php微信公众号退款,微信公众号支付--4--微信退款
  19. wps中有公式如何调整间距
  20. sketch html插件,玩转Sketch,不容错过的5大实用插件推荐

热门文章

  1. Win10 安装系统跳过创建用户,直接启用 Administrator
  2. 不需要自己录音也能做好短视频配音,只需一个小技巧,get逼真配音
  3. 并发数据结构Leapfrog Probing
  4. 1 LaTex入门--符号和结构 (上)
  5. CatBoost 原理及应用
  6. 向量型求导工具-Pytorch
  7. 分析函数-STDDEV,STDDEV_SAMP ,STDDEV_POP,VAR_POP,VAR_SAMP,VARIANCE
  8. java 电子杂志_java毕业设计_springboot框架的时尚电子杂志网站设计
  9. 从马尔科夫过程到吉布斯采样(附程序示例)
  10. 基于 HTML5 的画图工具【100010240】