JAVA web App扫码登录
思路:web请求1接口,得到一个sessionId,后端将sessionId缓存起来,并设置有效期。将sessionId返回给web端,web端将sessionId生成二维码。然后web端每个3、5请求一下轮询接口,判断缓存的sessionId是否正常,app扫码之后获取到sessionId,然后请求接口3,将sessionId和账号(或者token等唯一信息),如果APP在线则更新缓存数据,此时如果web端轮询sessionId缓存的值发生变化则校验是否授权登录成功。
1:web端请求服务端获取到sessionId,将sessionId设置一个过期时间存入redis
@ApiOperation("前端生成二维码,请求绑定关系,二维码过期时间30秒")
@PostMapping("/request")
public AjaxResult request(HttpServletRequest request) {String id = request.getSession().getId();redisService.set(id, id, 30);return AjaxResult.success("", id);
}
2:轮询,返回给前端信息
@ApiOperation("前端轮询该接口,扫码登录之后返回信息")
@PostMapping("/loopCode")
public AjaxResult loopCode(String sessionId) {Object o = redisService.get(sessionId);if (ObjectUtils.isEmpty(o)) {return AjaxResult.error("二维码已过期");}// APP端扫码认证成功之后将1中的缓存sessionId 更新为success或者自定义值if (o.toString().equals("success")) {// 将令牌和用户信息返回给web端跳转即可String mobile = (String) redisService.get(sessionId + "login");String token = (String) redisService.get(sessionId + mobile);AppUser user = tokenManage.getUser(token);Map map = new HashMap();map.put("token", token);map.put("user", user);return AjaxResult.success(map);}return new AjaxResult(AjaxResult.Type.SCAN_CODE, "扫码中");
}
3:扫码登录,app请求之后获取到二维码中的sessionId,将sessionId和手机号在缓存中绑定,并修改1中的缓存value
@ApiOperation("扫码登录")@PostMapping("/scanLogin")public AjaxResult scanLogin(String mobile, String sessionId) {Object o = redisService.get(sessionId);if (ObjectUtils.isEmpty(o)) {return AjaxResult.error("无效码");}AppUser appUser = appUserService.selectAppUserByPhonenumber(mobile);String token = tokenManage.getToken(appUser);if (ObjectUtils.isEmpty(token)) {return new AjaxResult(APP_AUTH_LOGIN, "令牌已过期,请重新登录");}redisService.set(sessionId, "success", 20);redisService.set(sessionId + "login", mobile, 20);redisService.set(sessionId + mobile, token,20);return AjaxResult.success();}
JAVA web App扫码登录相关推荐
- java实现简单扫码登录功能(模仿微信网页版扫码)
java实现简单扫码登录功能 模仿微信pc网页版扫码登录 使用js代码生成qrcode二维码减轻服务器压力 js循环请求服务端,判断是否qrcode被扫 二维码超时失效功能 二维码被扫成功登录,服务端 ...
- Java实现微信扫码登录并实现认证授权
Java实现微信扫码登录并实现认证授权 1.登录流程及原理 1.1 OAuth2协议 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.0 ...
- 【app扫码登录】Java app扫码登录功能实现
一.实现原理 PC 端发送 "扫码登录" 请求,服务端生成二维码 uuid,并存储二维码的过期时间.状态等信息. PC 端获取二维码并显示. PC 端开始轮询检查二维码的状态(2s ...
- 心通达OA 实现APP扫码登录过程
1.PC端web页面上登录切换到二维码 2.打开手机APP扫码 3.扫描 4.扫描后确认登录. 完成登录,进入心通达OA系统.
- 网页二维码,App 扫码登录实现原理
需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件.而开发这些app的企业,都有他们相对应的网站.为了让用户在使用他们的网站时,登录更加方便和安全.这些企 ...
- 架构:网页二维码,App 扫码登录实现原理
需求介绍 首先,介绍下什么是扫码登录.现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件.而开发这些app的企业,都有他们相对应的网站.为了让用户在使用他们的网站时,登录更加方便和安全.这些企 ...
- 钉钉授权第三方WEB网站扫码登录
一.阅读开发文档 首先阅读钉钉官方的开发文档,扫码登录其实用的是官方文档描述的第二种方式,即将钉钉登录二维码内嵌到自己页面中,用户使用钉钉扫码登录第三方网站,网站可以拿到钉钉的用户信息. 二.准备工作 ...
- java实现手机扫码登录客户端
为什么手机登录记住密码后不用再次登录 在了解扫码登录之前我们先了解一下其他内容, 首先为了安全,手机端它是不会存储你的登录密码的.但是在日常使用过程中,我们应该会注意到,只有在你的应用下 ...
- 使用java代码实现扫码登录
使用工具: redis+qrcode.js+jquery.js 注意事项: 扫码手机必须跟项目使用同一网络ip:不然网络ip不同扫码请求访问不到项目服务,我这里是用手机连接电脑热点进行扫码:亲测!!! ...
- java 系统生成二维码实现扫码登录 springboot 生成二维码
文章目录 前言 一.生成二维码 二.业务流程和代码逻辑梳理 总结 前言 使用框架 springboot 自己系统生成二维码,到前端网站,以及APP扫码登录流程,业务流程讲解梳理.也为自己做记录. ...
最新文章
- 协议 类似_IPv6基础及地址分类,地址发现协议,一分钟了解下
- linux时间同修改,linux 系统时间修改同步
- utf8 and unicode
- 天平游码读数例题_初二上册物理实验——托盘天平使用的注意事项
- 2017《面向对象程序设计》课程作业三
- python self 序列_python中序列化对象
- go在方法中修改结构体的值_[Go]结构体及其方法
- CVPR 2019|手写签名认证的逆鉴别网络
- Java校招笔试题-Java基础部分(六)
- 在MVVM模式下,ListBox的Command绑定
- Android指纹识别
- Lyn for Mac v2.1 中文版 – 轻量级图片浏览器
- ffplay播放器原理学习
- 微信开放平台认证后怎么实现扫码登录功能
- 【高等数学】第 2 讲 两个重要的极限定理
- php生成拟合线,excel拟合曲线怎么做
- 浅谈基于过程与基于对象
- 计算机课有平时成绩吗,大学计算机基础课程平时成绩评定方法探究.doc
- Hexo+GithubPage搭建Fan主题的博客(2)本地初始化Hexo博客项目
- ApeCoin计划推出自己的区块链,Messari分析师们怎么看?