实现网站二维码扫描登录

实现网站二维码扫描登录

分类: 架构设计2014-03-31 10:33 14613人阅读 评论(6) 收藏 举报

在尝试使用网页版微信时,发现微信的登录方式比较酷。区别与常用的用户名和密码的登录方式,网页微信登录只需要轻轻一扫,即可方便的实现登录功能。

下面尝试根据个人的理解对其可能的架构猜测一番。总体来看,扫描二维码实现网站的登录并不是太困难的事情。首先来看一下二维码登录的整体架构:

在整个架构中,主要包含了几个模块:手机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/

其实,上面写的都是错的,我压根没有做过类似的服务。

时间: 2024-08-27 03:23:36

实现网站二维码扫描登录的相关文章

php 实现 二维码 扫描登录

本人简单实现的示例,使用任意二维码工具打开二维码对应链接 http://www.vincentguo.cn/demo/scan 原理介绍: 第一步:访问登录页面,生成唯一key,例如MkhjDFL=,并且将此key 存入cache,对应值为-1 ,-1表示未登录 ,key有效期我设置的为5分钟,过期就会重新生成二维码图片 第二步:生成二维码,本人使用库(https://github.com/2amigos/yii2-qrcode-helper),二维码对应的链接 http://www.vince

Android实现二维码扫描登录网页

之前写过一个二维码扫描demo,用的Zxing的框架,点击下载,后续扫描二维码中出现一些问题,比如解决压缩图片,调整扫描窗口大小等等.后续单位要求做扫描登录实现,发现难点就是怎么知道你扫描的是这台电脑,后台必须获取到(后台技术的问题)然后把这个参数给我,再传递到后台,后台判断登录即可.这样自己扫描后直接传递个参数就可以实现登录了.效果如下: 大概代码实现:扫描跳转: //扫描登录a case R.id.tv_more_qr: if (PventQuickClick.isFastDoubleCli

聊一聊二维码扫描登录原理

扫二维码登录现在比较常见,比如微信.支付宝等 PC 端登录,并且好像每款 APP 都支持扫码登录,不搞个扫码登录都不好意思.作为技术人员,不知道您对这背后的实现逻辑是否敢兴趣,反正我是一直都对这背后实现好奇.最近刚好看到一个关于扫码登录原理的视频,于是就整理出来了这篇文章,希望对您有所帮助. 本文共三个主题: 什么是二维码. 移动端基于 token 的认证机制. 二维码扫码登录的原理. 1.什么是二维码 二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一

实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端

转自:http://blog.csdn.net/otangba/article/details/8273952 终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的. 服务器端要做得事很多,虽然逻辑不是很复杂,但是我们必须要分析清楚我们要做哪些事,请看下图: 通过这张图,我们看出,服务器端的接口一共有6个,分别处理: 手机客户端登录 首页 二维码图片流 long polling维持 接收手机客户端已扫描的通知 接收手机客户端已确认登录的通知 那么一个一个解决 首先是

实现手机扫描二维码页面登录,类似web微信-第一篇,业务分析

转自:http://www.cnblogs.com/fengyun99/p/3541249.html 关于XMPP组件的文章,先休息两天,好歹已经完整的写了一份. 这两天,先实现一套关于web微信扫描二维码页面登录的试验,因为这种模式在我们的很多业务场景里大有前途. 首先介绍一下web微信登录的过程 手机必须运行微信,并且合法登录 打开web微信的页面,展示一个二维码 用手机微信的扫描功能扫描该二维码 页面立即显示手机已扫描 手机显示是否确认登录,点击确认 页面登录 这个过程将传统的web登录转

【IOS】集成zxing(二维码扫描)

现在zxing已经到了2.2版本,以前的集成方式出了点问题.下面我做出一点修正.以前的版本的集成方法,参考:http://blog.devtang.com/blog/2012/12/23/use-zxing-library/按照以前的方式做好后  然后就是适配以下现在的版本的修改1.增加   SenTestingKit  框架 设置为Optional2.把目录 iphone/ZXingWidget 下的Tests删了3.保留目录 cpp/core/src 的bigint文件最后提醒:  设置查找

Android二维码扫描登陆网页

1        二维码扫描登陆 1,web端生成二维码,传递uuid,并存入数据库 2,web端轮训查询信息,是否有数据库扫描二维码信息 3,手机端扫描二维码,获取UUID,传递用户名.密码web端 4,web查询数据库中用户信息(UserLogin),将登陆信息(用户名,密码)存入数据库. 5,web轮训查到用户登陆信息,信息完整,则登陆成功. 1.1    web端 1.1.1  导入依赖包(二维码生成QRCode.jar) jar包下载:QRCode.jar 1.1.2  用户登陆信息实

Qt之二维码扫描

简述 二维码(QR Code)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的.是所有信息数据的一把钥匙.应用十分广泛,如:产品防伪/溯源.广告推送.网站链接.数据下载.商品交易.定位/导航.电子凭证.车辆管理.信息传递.名片交流.wifi共享等. 二维条码常用的码制: Data Matrix.MaxiCode.Aztec.QR Code.Vericode.PDF417.Ultracode.Code 49.Code 16K等. 简述 二维码与一维码 二维码

二维码扫描

1.将ZBar的SDK导入工程 SDK下载地址:https://i.cnblogs.com/Files.aspx 或者去官网下载:https://github.com/bmorton/ZBarSDK 2.设置依赖库 需要添加AVFoundation  CoreMedia  CoreVideo QuartzCore libiconv 3.修改工程配置 1)      Framework Search Path 2)      如果使用xcode7.0以上 ,还需设置: /* 4. 版本说明  1.