扫描二维码登录的接口
最近写了一个扫描二维码登录的接口,功能完成后,有很多的知识需要学习。
首先说一下扫码登录的流程:一个程序最重要的就是业务流程,只有明白流程是什么才能继续往下写代码
扫码登录的流程:
(1)生成二维码:
a.首先生成随机的Id用来表示生成的二维码,使用cookie中的uniqueFlag为名称用来标记是否登录,如果cookie中存在uniqueFlag,则直接将randomId的值为该cookie的值,表示已经登录;没有的话则创该cookie. CookieTool.addCookie(response,"uniqueFlag",randomId,86400);
b.生成二维码的内容为接口的地址加上随机的randomId,用来保证每个二维码不一样,其中的链接使用了加密,加密方式为3DES, 返回字符串为Base64
c.生成二维码,使用BufferImage用来装生成的图片,其中使用了QRCodeUtils工具类中的encode方法,对链接进行生成二维码
d.输出二维码:尽量不要使用文件的形式,将生成的二维码放到哪个文件中,这样会造成占用空间,并且图片的位置在服务器上不容易找到图片文件的路径,容易造成图片不能生成,我采取的方法是使用response.getOutputStream() 输出流直接输出到页面,这样不会占用空间,而且不管是在本地还是在服务器上都能输出出来 。ImageIO.write(bufImg, "jpg", out); 使用ImageIO展示图片,其中BufImage表示二维码的内容,jpg表示生成二维码的格式,out使用输出流直接输出到页面上。此过程可能会抛出异常,try catch 一下就可以了。
(2)扫描二维码:定时向后台发起轮询
a.前台使用Ajax进行定时向后台发送请求,定时方法使用setInterval("方法名",秒数),查询是否登录,这里的查询是查询根据cookie的uniqueFlag名得到相应的randomId,再通过randomId得到所对应的redis缓存,判断是否是空,如果不是空则进行相应操作,存用户的信息,存cookie,存session,并返回true,是空的话直接返回false;
b.后台查询:得到cookie中uniqueFlag的random值,得到redis缓存中以random为key值的sign值,如果sign不为空,分割字符串,并将对应的信息存到cookie和session中,返回true,否则返回false.
(3)扫码登录:手机app处于登录状态
a.接口的使用post 表单提交 key value 的方式得到签名sign值和二维码Id的值
b.其中的sign传值时需要加密,在springMvc中直接通过名得到值,也可以通过request.getParameter()来得到相应的值。
c.接收到参数最先判断是否为空,如果为空,则登录失败,可以使用map ,put进相应的信息再转成json
d.不是空则进行解密,并把解密后的结果存到redis中以randomId为key的缓存中,返回成功。
扫描二维码登录的接口相关推荐
- 浅谈扫描二维码登录微信网页版与摇一摇传图的实现原理
前言:简单体验了下微信网页版通过二维码登录和摇一摇传图功能,从技术角度看,网上专家吹捧的 [隔空取物]其实并不神秘,我先简单分析一下. 1. 微信移动端扫描二维码登录(C-S-C模式) CSC模式为: ...
- 百度网盘PC端扫描二维码登录时无法加载二维码问题解决方法
问题: 今天在PC端扫描登录百度网盘时,二维码无法加载出来,具体情况如图: 解决方法: 1.打开IE浏览器 2.打开工具 3.打开Internet选项 4.打开高级选项,重置IE设置 5.点击确定,打 ...
- 随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的
随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的 腾讯网(www.qq.com)有一个扫码登录功能很有意思, 点击首页一键登录按钮,就会展现一个二维码,用手机qq扫描此二维码就可以使当 ...
- 图示扫描二维码登录原理
想要了解手机端扫描二维码登录原理,首先我们要了解二维码和token认证机制两个内容,接下来我们将用图示的方法来直观感受这个面试时候的paper tiger. (第一次用visio画图,用熟练之后就感觉 ...
- 电脑版和手机版QQ都要手机版QQ扫描二维码登录?
是的,电脑版和手机版 QQ 都需要使用手机版 QQ 扫描二维码登录.这是因为扫描二维码登录是 QQ 的安全认证方式之一.
- Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细
Android安卓开发中集成微信二维码登录的步骤: 写在前面的: 该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源.在最后,我会附上这个Activity的 ...
- 微信扫描二维码登录第三方平台
嗯...... 最近做了一个微信扫码登陆第三方平台功能,说下步骤就行,反正原理你们网上直接百度,我这里写了,估计也没几个人有耐心看 第一步 生成一个链接 https://open.weixin.qq. ...
- E站账号cookie分享_不用输入密码无风险?扫描二维码登录QQ账号也不安全!
很多人都有这样一个误区 觉得QQ二维码登录.快速登录不会被盗号,一直以来我也是这么认为的. 但是0202年了,因为个人账号很容易找回,盗号者并不能像十几年前那样直接将qq占为己有,一般都是利用冻结账号 ...
- 网页扫描二维码登录页面的原理(通俗、易懂)
我的理解是: 二维码登录网页的基本原理是,用户进入登陆网页后,服务器生成一个uid来唯一标识一个用户,每一次刷新uid都会变换,保证一个uid绑定 一个账号和密码,同时游览器与服务器创建一个长链接,用 ...
- 扫描二维码登录的过程?
二维码登录实际上和用户名密码登录要做的事情一致,账号告诉服务器「我是谁?」,密码是向服务器证明「我是我」.扫码也是一样. 下图是一个基础的客户端账号密码认证过程: 然后想一下二维码登陆时的场景: 二维 ...
最新文章
- Install Oracle Instant Client on Linux and Windows
- 网络推广——网络推广专员在面对不同阶段网站优化各有妙计
- 射频与微波测量之S参数
- 浅谈Java中的数据类型以及面向对象
- 技术人员如何创业《四》- 打造超强执行力团队(转载)
- 单变量离散傅里叶变换DFT原理及实现
- 注册/找回密码等功能中发送手机验证码后倒计时效果的实现(基于vue)
- android image 转yuv_Android将camera获取到的YuvData在jni中转化为Mat方法
- 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...
- Fl Studio真的不如Cubase或者Logic Pro等电音软件专业吗?
- linux文件怎么加密,linux下文件加密方法总结
- 2020ISSCC 基于SRAM的存内计算15.5阅读记录
- UltraEdit编辑器中文乱码问题解决
- 图片后缀和ContentType大全
- 使用sftp在客户端与服务器之间进行文件传输
- 大学开学初计算机水平测试,请查收这份大学生开学攻略——
- matlab 二维矩阵变成一维矩阵
- HTML5简单个人主页设计
- 第四章SignalR自托管主机
- 网络字节序和主机字节序互转