欢迎来到天天文库
浏览记录
ID:31357844
大小:106.00 KB
页数:5页
时间:2019-01-09
《仿微信扫码登录系统的实现与改进》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、仿微信扫码登录系统的实现与改进 摘要:网页版微信刚刚问世时,其独特的登录模式就吸引了无数人的眼光,无需输入用户名和密码,只需通过手机客户端扫一扫便能轻松一键登录。时至今日,不止微信,微博、淘宝乃至其他各种应用,绝大部分都已具有了扫码登录功能。文中在介绍扫码登录的原理及系统实现的基础上,还对现有扫码登录模式做了一些简单改进。 关键词:二维码;扫码登录;HTTP;WebSocket 中图分类号:TP316文献标识码:A文章编号:2095-1302(2016)12-00-02 0引言 扫码登录作为一种新
2、的登录方式,它不仅更为便捷,其不需再次输入用户信息直接扫码登录的方式更意味着减少了账户泄密的风险,相比传统登录方式而言更加安全。同时,登录方式的改变也必将影响到我们生活的点点滴滴,时至今日,扫码登录已经走进了千家万户。 1扫码登录的原理 扫码登录的基本原理是手机客户端扫描二维码并从中解析出数据,然后把数据发送给服务器,服务器收到手机客户端发送来的数据后,对数据进行验证匹配,浏览器根据服务器的响应进行相应操作。我们以网页版微信为例,借助浏览器调试工具,简略介绍扫码登录的实现原理。 1.1扫码登录的操作过
3、程5 扫码登录的操作过程分为如下几步: (1)打开浏览器,在地址栏输入https://wx.qq.com/。 (2)登录微信手机客户端,点击“扫一扫”,扫描网页上的二维码。 (3)浏览器与手机客户端界面几乎同时跳转,手机客户端跳转到网页版微信登录确认界面,电脑上显示出用户头像并提示扫描成功。 (4)手机客户端点击“确认登录”,网页跳转到用户的微信操作界面。 1.2扫码登录原理分析 每次打开微信网页版时,网页都会生成一个二维码,虽然二维码的外观相似,但每个二维码里携带的信息均不相同,且具有一个全
4、局唯一的身份标识符,以确定页面的身份并保证登录用户的唯一性。我们连续三次刷新微信登录界面,使用二维码解析工具解析网页上的二维码,得到的解析结果如下: https://login.weixin.qq.com/l/oaRRaUdeBw== https://login.weixin.qq.com/l/IaCQ2k3D-g== https://login.weixin.qq.com/l/wbnZahDs-w== 由此可以证实我们的推测,每次生成的网页标识符是唯一的,由此网页身份也就确定下来。 页面除了每次
5、生成一个唯一的随机ID外,还会每隔一定时间就请求服务器来确定该二维码的扫描状态,判断用户是否进行了扫码登录操作。打开浏览器的调试工具,我们可以获得图1所示的信息。 由图1可以简单推断出页面的请求周期大约为275s。当手机客户端扫码二维码时,把得到的ID信息与登录该手机客户端的账号信息绑定,并将该绑定信息上传给服务器。当页面查询到服务器上该ID对应的扫描状态发生变化时,获取该ID对应的相关数据,然后页面跳转,这样用户就可以进行后续操作了。 2扫码登录的实现过程 扫码登录的实现过程分为如下几步: (1)
6、用户访问页面时,服务器会生成一个全局唯一的ID,并将该信息保存到页面的二维码中。 (2)用户打开并登录手机客户端,扫码二维码。 (3)手机客户端将扫描到的二维码中的信息和登录该客户端的用户信息发送到服务器。 (4)服务器收到手机客户端发过来的信息后建立相应的映射关系。 (5)当页面请求到本页面对应的ID扫描状态改变时,从服务器中取出相应的数据并加载至页面。 完成上述五个步骤之后,扫码登录基本实现,其业务流程如图2所示。 3改进 在分析扫码登录的基本原理时可以发现,以微信为代表的扫码登录采用HT
7、TP请求的方式来感知页面的扫描状态。每隔一定时间就发起一次HTTP5GET请求,一直持续到页面的扫描状态发生变化。这样的处理方式虽然简单便捷,但当页面的扫描状态长时间未发生变化时,会有大量HTTP请求出现,不仅会造成带宽浪费,还在一定程度上影响到系统的性能。不仅如此,假如请求周期设计不合理,页面往往不能及时响应用户的扫码操作,造成操作失败,严重影响用户体验。传统HTTP请求响应交互图如图3所示。 既然页面主动感知自己的扫描状态如此困难,那么是否可以由服务器主动通知页面它的扫描状态已发生变化呢?答案是肯定的
8、,传统的HTTP请求仅能实现单向通信,即页面向服务器发起请求获取数据,而不能由服务器主动将数据传递给页面。但在HTML5时代,利用WebSocket技术可以轻松实现这个操作。WebSocket请求响应交互图如图4所示。 通过WebSocket技术可以更好地优化扫码登录流程。当服务器接收到手机客户端发过来的扫描数据时,无需等待下一次页面请求便可直接将数据推送到页面,推动页面进行后续操作,实现真正意义上的同步跳转。
此文档下载收益归作者所有