最近写了一个扫描二维码登录的接口,功能完成后,有很多的知识需要学习。

首先说一下扫码登录的流程:一个程序最重要的就是业务流程,只有明白流程是什么才能继续往下写代码

扫码登录的流程:

(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. 浅谈扫描二维码登录微信网页版与摇一摇传图的实现原理

    前言:简单体验了下微信网页版通过二维码登录和摇一摇传图功能,从技术角度看,网上专家吹捧的 [隔空取物]其实并不神秘,我先简单分析一下. 1. 微信移动端扫描二维码登录(C-S-C模式) CSC模式为: ...

  2. 百度网盘PC端扫描二维码登录时无法加载二维码问题解决方法

    问题: 今天在PC端扫描登录百度网盘时,二维码无法加载出来,具体情况如图: 解决方法: 1.打开IE浏览器 2.打开工具 3.打开Internet选项 4.打开高级选项,重置IE设置 5.点击确定,打 ...

  3. 随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的

    随机字符串解决大问题之腾讯网如何实现手机扫描二维码登录qq功能的 腾讯网(www.qq.com)有一个扫码登录功能很有意思, 点击首页一键登录按钮,就会展现一个二维码,用手机qq扫描此二维码就可以使当 ...

  4. 图示扫描二维码登录原理

    想要了解手机端扫描二维码登录原理,首先我们要了解二维码和token认证机制两个内容,接下来我们将用图示的方法来直观感受这个面试时候的paper tiger. (第一次用visio画图,用熟练之后就感觉 ...

  5. 电脑版和手机版QQ都要手机版QQ扫描二维码登录?

    是的,电脑版和手机版 QQ 都需要使用手机版 QQ 扫描二维码登录.这是因为扫描二维码登录是 QQ 的安全认证方式之一.

  6. Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细

    Android安卓开发中集成微信二维码登录的步骤: 写在前面的: 该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源.在最后,我会附上这个Activity的 ...

  7. 微信扫描二维码登录第三方平台

    嗯...... 最近做了一个微信扫码登陆第三方平台功能,说下步骤就行,反正原理你们网上直接百度,我这里写了,估计也没几个人有耐心看 第一步 生成一个链接 https://open.weixin.qq. ...

  8. E站账号cookie分享_不用输入密码无风险?扫描二维码登录QQ账号也不安全!

    很多人都有这样一个误区 觉得QQ二维码登录.快速登录不会被盗号,一直以来我也是这么认为的. 但是0202年了,因为个人账号很容易找回,盗号者并不能像十几年前那样直接将qq占为己有,一般都是利用冻结账号 ...

  9. 网页扫描二维码登录页面的原理(通俗、易懂)

    我的理解是: 二维码登录网页的基本原理是,用户进入登陆网页后,服务器生成一个uid来唯一标识一个用户,每一次刷新uid都会变换,保证一个uid绑定 一个账号和密码,同时游览器与服务器创建一个长链接,用 ...

  10. 扫描二维码登录的过程?

    二维码登录实际上和用户名密码登录要做的事情一致,账号告诉服务器「我是谁?」,密码是向服务器证明「我是我」.扫码也是一样. 下图是一个基础的客户端账号密码认证过程: 然后想一下二维码登陆时的场景: 二维 ...

最新文章

  1. Install Oracle Instant Client on Linux and Windows
  2. 网络推广——网络推广专员在面对不同阶段网站优化各有妙计
  3. 射频与微波测量之S参数
  4. 浅谈Java中的数据类型以及面向对象
  5. 技术人员如何创业《四》- 打造超强执行力团队(转载)
  6. 单变量离散傅里叶变换DFT原理及实现
  7. 注册/找回密码等功能中发送手机验证码后倒计时效果的实现(基于vue)
  8. android image 转yuv_Android将camera获取到的YuvData在jni中转化为Mat方法
  9. 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...
  10. Fl Studio真的不如Cubase或者Logic Pro等电音软件专业吗?
  11. linux文件怎么加密,linux下文件加密方法总结
  12. 2020ISSCC 基于SRAM的存内计算15.5阅读记录
  13. UltraEdit编辑器中文乱码问题解决
  14. 图片后缀和ContentType大全
  15. 使用sftp在客户端与服务器之间进行文件传输
  16. 大学开学初计算机水平测试,请查收这份大学生开学攻略——
  17. matlab 二维矩阵变成一维矩阵
  18. HTML5简单个人主页设计
  19. 第四章SignalR自托管主机
  20. 网络字节序和主机字节序互转

热门文章

  1. 设计模式相关书籍推荐
  2. 分享2个Python处理Excel的脚本
  3. 【ELAMN预测】基于遗传算法优化ELMAN神经网络实现电力符合数据回归预测附matlab代码
  4. windows 微信多开脚本
  5. matlab卷积神经网络的创建与图片识别
  6. 土壤因子-中国和世界土壤因子数据说明和下载链接
  7. kux格式怎么转换成mp3_kux格式如何转换成mp4、mp3?
  8. 视频转换器怎么用?迅捷视频转换器图文操作教程分享
  9. NetBIOS、NETBEUI、IPX/SPX
  10. HSV空间改进的多尺度Retinex算法