实现网站二维码扫描登录
来源:互联网 发布:2017编程语言 编辑:程序博客网 时间:2024/04/28 14:40
在尝试使用网页版微信时,发现微信的登录方式比较酷。区别与常用的用户名和密码的登录方式,网页微信登录只需要轻轻一扫,即可方便的实现登录功能。
下面尝试根据个人的理解对其可能的架构猜测一番。总体来看,扫描二维码实现网站的登录并不是太困难的事情。首先来看一下二维码登录的整体架构:
在整个架构中,主要包含了几个模块:手机App、浏览器、Web服务器以及存储服务(session服务)。整个方案的主要流程如下:
1)获取二维码
在打开weixin.qq.com整个页面之后,会在浏览器端种下sessionid,其中sessionid与浏览器中展示的二维码已经了映射关系。如方案一架构图所示:Web服务器接收到浏览器的<1.获取二维码>请求之后,生成与这个连接对应的session以及二维码图片,同时存储sessionid与二维码图片的一一映射关系(必须保证二维码图片与sessionid的唯一性,后面流程中,需要根据二维码图片来检索sessionid以实现通知该浏览器实现登录);
2)扫描二维码
手机App扫描浏览器的二维码图片,在手机App上完成确认授权之后,自动将手机App的登录态信息提交给Web服务器。Web服务确认提交等手机登录态合法之后,根据二维码检索出浏览器的链接信息即sessionid,与之对应的sessionid被设置为已经完成登录,同时绑定合法的浏览器端的用户登录态信息;
3)通知浏览器完成登录
浏览器如何及时的获取已经完成授权登录了呢?其实,针对这类问题主要有两种解决方案:
a)ajax异步定时轮训请求
采用这种方法技术实现成本比较低,伪实时,实时性的程度取决于ajax请求的频繁程度,高频度的请求无疑会给服务器带来不小的开销,所幸的是,针对这个登录场景并发请求量不会太高;
b)Http comet实时推送
采用comet实时推送给的方案,就是下图方案二所示,手机App确认授权之后,推送服务会将浏览器的登录信息实时推送给浏览器,这种方案的实时性无疑是最高的,在网页聊天、即时监控等场景下比较使用,用户的产品体验也会非常高,带来的问题在于:高昂的技术实现成本。
4)本地浏览器绑定cookie
浏览器接收到通知之后,架构用户信息关键是用户登录凭证写入到浏览器的Cookie中,在后续请求其他服务的过程中,作为最基本的请求参数进行传递;
关于Comet推送的技术请参见:
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
其实,上面写的都是错的,我压根没有做过类似的服务。
2 0
- 实现网站二维码扫描登录
- 实现网站二维码扫描登录
- 实现网站二维码扫描登录
- 网站扫描二维码登录
- java实现二维码扫描登录
- 微信扫描二维码快速登录网站
- 微信扫描二维码登录网站---href设置二维码大小
- HTML5实现扫描二维码进行登录问题
- 实现手机扫描二维码进行登录
- Android 扫描二维码实现网页登录
- 扫描二维码自动登录实现原理
- 扫描二维码实现一键登录
- Android实现二维码扫描登录网页
- 二维码扫描web端实现登录
- Android 扫描二维码实现网页登录
- 微信扫描二维码,实现自动登录
- WebSocket实现app扫描二维码登录
- 实现手机扫描二维码进行登录
- Error: unable to connect to node rabbit@10: nodedown
- 最近的工作及想法
- Android 网络通信框架Volley简介(Google IO 2013)
- 新版本sdk不停提示需要check update,更新无效
- DB2 WINDOWS脚本调用存储过程
- 实现网站二维码扫描登录
- 机器学习实战之决策树
- (Java随机数举例)随机扔一千次硬币的正反次数
- 合并项目 压缩时限 市消防支队审批提速
- RedHat用CentOS系统源
- LigerUI刷新父窗口
- 线性规划
- 一周消息树:雨果·巴拉与小米的那些事儿
- C# WinForm窗体间传值