扫码登录背后的实现原理

1)网页端与服务器的配合逻辑:

首先用户打开网站的登录页面的时候,向浏览器的服务器发送获取登录二维码的请求。服务器收到请求后,随机生成一个uuid,将这个id作为key值存入redis服务器,同时设置一个过期时间,再过期后,用户登录二维码需要进行刷新重新获取。

同时,将这个key值和本公司的验证字符串合在一起,通过二维码生成接口,生成一个二维码的图片(二维码生成,网上有很多现成的接口和源码,这里不再介绍)。然后,将二维码图片和uuid一起返回给用户浏览器。

浏览器拿到二维码和uuid后,会每隔一秒向服务器发送一次,登录是否成功的请求。请求中携带有uuid作为当前页面的标识符。这里有的同学就会奇怪了,服务器只存了个uuid在redis中作为key值,怎么会有用户的id信息呢?

这里确实会有用户的id信息,这个id信息是由手机服务器存入redis中的。具体请继续阅读“手机端与服务器的配合逻辑”。

2)手机端与服务器的配合逻辑:

话说,浏览器拿到二维码后,将二维码展示到网页上,并给用户一个提示:请掏出您的手机,打开扫一扫进行登录。

用户拿出手机扫描二维码,就可以得到一个验证信息和一个uuid(扫描二维码获取字符串的功能在网上同样有很多demo,这里就不详细介绍了)。

由于手机端已经进行过了登录,在访问手机端的服务器的时候,参数中都会携带一个用户的token,手机端服务器可以从中解析到用户的userId(这里从token中取值而不是手机端直接传userid是为了安全,直接传userid可能会被截获和修改,token是加密的,被修改的风险会小很多)。手机端将解析到的数据和用户token一起作为参数,向服务器发送验证登录请求(这里的服务器是手机服务器,手机端的服务器跟网页端服务器不是同一台服务器)。

服务器收到请求后,首先对比参数中的验证信息,确定是否为用户登录请求接口。如果是,返回一个确认信息给手机端。

手机端收到返回后,将登录确认框显示给用户(防止用户误操作,同时使登录更加人性化)。用户确认是进行的登录操作后,手机再次发送请求。服务器拿到uuId和userId后,将用户的userid作为value值存入redis中以uuid作为key的键值对中。

3)登录成功时的逻辑:

然后,浏览器再次发送请求的时候,浏览器端的服务器就可以得到一个用户Id,并调用登录的方法,生成一个浏览器端的token,再浏览器再次发送请求的时候,将用户信息返回给浏览器,登录成功。这里存储用户id而不是直接存储用户信息是因为,手机端的用户信息,不一定是和浏览器端的用户信息完全一致。

参考链接

https://mp.weixin.qq.com/s/hyylGnI6utLjwkWCfMoE5w

扫码登录背后的实现原理相关推荐

  1. 一文详析微信和淘宝扫码登录背后的实现原理!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:imtech my.oschina.net/u/4231722/blog/3 ...

  2. 面试官:说说微信和淘宝扫码登录背后的实现原理?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | my.oschina.net/u/423172 ...

  3. 面试官:聊聊微信和淘宝扫码登录背后的实现原理?

    本文来源: my.oschina.net/u/4231722/blog/3154805 <Java工程师面试突击(第3季)>重磅升级,由原来的70讲增至140讲,内容扩充一倍,升级部分内容 ...

  4. 微信和淘宝扫码登录背后的实现原理

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2019 超神之路,很肝~ 中文详细注释的开源项目 ...

  5. 阿里面试官:分别说说微信和淘宝扫码登录背后的实现原理

    作者:imtech my.oschina.net/u/4231722/blog/3154805 1.引言 扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录) ...

  6. 面试官:分别说说微信和淘宝扫码登录背后的实现原理?

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:imtech 来源:https://my.oschina.net/u/4231722/blog/3154805 1.引言 ...

  7. 腾讯面试官:聊聊微信和淘宝扫码登录背后的实现原理?GG了

    作者丨imtech 来源: my.oschina.net/u/4231722/blog/3154805 1.引言 扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方 ...

  8. 分别说说微信和淘宝扫码登录背后的实现原理?

    搬运工,链接在此: https://mp.weixin.qq.com/s/jiU-3879C3Exw_gSJnsbAg

  9. 面试官:二维码扫码登录是个啥原理

    ????推荐大家关注一个公众号???? 点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Remember the ...

最新文章

  1. java收银台程序gui_javaSE小项目---简易收银台
  2. docker笔记1_安装及常用命令
  3. docker登录mysql数据库_Docker下搭建mysql数据库
  4. 使用爬虫爬去网上的图片并保存
  5. matlab条形图颜色矩阵,matlab中的条形图开关颜色
  6. Macaca-iOS入门那些事2
  7. LeetCode 769. Max Chunks To Make Sorted
  8. c语言在线编译 tool.lu,【第229期】在线工具——程序员的工具箱
  9. 恩佐盒子服务器维护,恩佐宝盒有苹果版吗
  10. CMake macOS安装
  11. JS实现16进制转字符串
  12. 为什么手机上传图片这么慢 前端_为什么手机上传速度那么慢?
  13. 用电视上网——网络电视机顶盒
  14. Java 读取Word文本框中的文本/图片/表格
  15. 一点知识丨Base64 的图片如何完美复制到系统粘贴板
  16. 北京某牧场管理企业——牧场智慧管理项目
  17. 欧派家居牵手用友云平台 打造标准化数据资产管理平台
  18. 什么是动画效果?什么是过渡效果?
  19. CMSIS(Cortex微控制器软件接口标准) 介绍链接
  20. 计算机二级考试python考试大纲_全国计算机等级考试二级Python语言程序设计考试大纲(2018年版)...

热门文章

  1. 车载测试自动驾驶域控制器开发和量产的挑战
  2. X-Frame-Options(点击劫持)
  3. java word格式 导出图表和表格 浏览器下载 支持生成扇形图,条形图等
  4. 宫崎骏动画里的新垣结衣见过没?这个开源动漫生成器让你的照片秒变手绘日漫...
  5. 怎么设置IP不会冲突,本地电脑为服务器时IP冲突解决方案!
  6. 树莓派 Python 网络编程 (Socket入门)
  7. 不加速的“抢票加速包”,你还在用吗?
  8. ef mysql 配置字符串_连接字符串-EF Core | Microsoft Docs
  9. 北科-数学跨专业考本校871计算机专硕经验贴
  10. 育儿-《10-14岁青少年,你在想什么?》书中的精髓:父母如何理解青少年潜意识中的冲突和需求,陪伴他们共度青春期?