如何实现扫码登陆 & 扫码登陆原理

简介: 如何实现扫码登陆 & 扫码登陆原理

如何实现Web端扫码登陆


7.1 前提:在移动客户端上认证用户身份

这也就是需要先在一个移动设备上进行登陆,一般是专用应用而不能是移动端的浏览器页面。

7.2 扫码登陆流程

在阅读这部分内容前请确保你已经完全掌握认证的含义,关于认证已在文章开篇有详细的讲解。

7.2.1 认证前从客户端发起请求:

一旦前端对于从服务端发来的 Key ,便对其进行编码成一个二维码,如 qrCode,用户用户在移动端进行扫码:

扫码登陆:这是笔者为了说明而做的一个模拟扫码页面

安全起见,二维码是有有效期的,可以手动设置一个有效期,也可以给定一个刷新按钮来从服务器更新二维码信息并在客户端中重新渲染。

7.2.2 用户在移动设备扫码

这一阶段中:

  • 对于 Web客户端 而言,客户端拿着自己从服务端获取的Key向服务端发起轮询已了解自己在移动设备上是否完成身份认证。
  • 对于 移动端 而言,当移动设备上进行扫码后,移动端便获取了Web客户端从服务器获取的Key。为了确保安全,移动端不应急于提交数据而应先向移动设备操作者确认登陆意图,对于安全较高的应用情景如银行帐户的登陆等,还需要做进一步的确认如人脸验证语音验证短信验证等等。验证完成后,将从PC客户端扫码获取的key与移动端自己存储的身份信息(有可能也是一个令牌之类的签名工具)发送的服务端

7.2.3 服务端响应客户端的轮询

对于 服务端而言,它时刻监听着来自多个移动端和Web客户端发过来的请求(可能有多个用户同时在进行认证操作)。 一旦监听到了移动端传来的key用户身份签名,意味着之前发给Web客户端用户生成二维码的Key被移动端扫描登陆中,这时需要响应此Key对应的客户端的轮询。可想而知为了额能确定相应的到底是哪一个Web客户端的轮询,这就要求服务端的Key必须是全局唯一的。

7.2.4 Web客户端完成登陆

当客户端在某次轮询后得到了签名工具(令牌 token)后,意味着以后可以使用该令牌对需要回传服务器的数据进行身份签名。这时可以提示用户“扫码登陆成功”,并跳转到相关的页面。但是需要注意的是,处于安全考虑仍不建议将与用户相关的重要数据存储在 token 中,因为这样容易导致 token 被破解带来的用户信息泄露。此处妥当的做法仍然是,将 token 用作某个时间端内在服务端标识某特定用户的键,但其中所有与用户相关的信息(值)仍然是存储在服务端的。

目录
相关文章
|
安全 Java 数据安全/隐私保护
SpringBoot实现二维码扫码登录的原理与详细步骤
SpringBoot实现二维码扫码登录的原理与详细步骤
1572 1
|
JavaScript 关系型数据库 MySQL
fastadmin 部署phpstudy,初步学习fastadmin,保姆级详细讲解
fastadmin 部署phpstudy,初步学习fastadmin,保姆级详细讲解
1245 0
|
JavaScript 内存技术
node与npm版本对应关系以及使用nvm管理node版本
node与npm版本对应关系以及使用nvm管理node版本
9391 0
|
安全 UED 开发者
微信扫码登录--设计技术分享
【8月更文挑战第7天】在当今的数字化时代,微信扫码登录已成为众多网站和应用提升用户体验、简化登录流程的重要手段。本文将围绕微信扫码登录的设计原理、实现步骤及关键技术点进行技术分享,帮助开发者更好地理解和应用这一功能。
1914 0
|
存储 NoSQL 前端开发
美团面试:手机扫描PC二维码登录,底层原理和完整流程是什么?
45岁老架构师尼恩详细梳理了手机扫码登录的完整流程,帮助大家在面试中脱颖而出。该过程分为三个阶段:待扫描阶段、已扫描待确认阶段和已确认阶段。更多技术圣经系列PDF及详细内容,请关注【技术自由圈】获取。
|
固态存储 测试技术 iOS开发
硬盘检测工具哪个最好用?这8款值得收藏
硬盘健康状况直接影响电脑性能,选择合适的检测工具至关重要。本文推荐8款实用硬盘检测工具:Windows CHKDSK、DiskGenius免费版、Victoria、HDDScan、SeaTools、AIDA64、HD Tune Pro及Mac磁盘工具。这些工具功能全面,操作简单,涵盖S.M.A.R.T信息查看、坏道检测与修复、性能测试等,满足不同用户需求。无论是Windows还是macOS用户,均可找到适合的工具维护硬盘健康。
|
设计模式 消息中间件 供应链
前端必须掌握的设计模式——发布订阅模式
发布订阅模式(Publish-Subscribe Pattern)是一种设计模式,类似于观察者模式,但通过引入第三方中介实现发布者和订阅者的解耦。发布者不再直接通知订阅者,而是将消息发送给中介,由中介负责分发给订阅者。这种方式提高了异步支持和安全性,适合复杂、高并发场景,如消息队列和流处理系统。代码实现中,通过定义发布者、订阅者和中介接口,确保消息的正确传递。此模式在前端开发中广泛应用,例如Vue的数据双向绑定。
|
Java 开发工具 数据库
从mybatis-plus-generator看如何编写代码生成器
velocity模板引擎分三步,1.初始化 配置模板加载地址;2.放置上下文变量velocityContext;3.渲染模板。
1098 0
从mybatis-plus-generator看如何编写代码生成器

热门文章

最新文章