app互斥登录,只能登录一个.
思路:
1.手机app的每一次请求都携带参数(每个手机的唯一设备号),放在请求头中.当app登录成功之后,获取参数存到数据库中.
2.添加拦截器,获取请求头里面的唯一设备号,如果和当前登陆者数据库里面的一致,则通过,否则返回false,提示设备已经登录.
拦截器配置:
<mvc:interceptors><!-- 放sql注入攻击防御 --><mvc:interceptor><!-- 需拦截的地址 --><mvc:mapping path="/**" /><!-- 需排除拦截的地址 --><mvc:exclude-mapping path="/resources/**" /><mvc:exclude-mapping path="/api/auth/cas-app/login" /><mvc:exclude-mapping path="/auth/cas-app/login" /><bean class="com.boeryun.interceptor.AppMutexInterceptor" /></mvc:interceptor> </mvc:interceptors>
拦截器:
public class AppMutexInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {if(("android".equals(Global.getRequest().getHeader("DEVICE-USER-AGENT")) || "ios".equals(Global.getRequest().getHeader("DEVICE-USER-AGENT")))){String deviceNumber = Global.getRequest().getHeader("deviceNumber");String sql = MessageFormat.format(" select deviceModel from {0} where uuid =''{1}'' ",DbHelper.getTableName("base_staff"),Global.getUserId());if(DbHelper.getScalar(sql)!=null && DbHelper.getScalar(sql).toString().equals(deviceNumber) ){return true;}else{ // response.setHeader("Content-Type", "text/html;charset=UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("application/json; charset=utf-8");JSONObject map = new JSONObject();map.put("Status", "502");map.put("Message","您的账号在另外一台设备登录!");response.getWriter().append(map.toString());return false;}}return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {} }
app互斥登录,只能登录一个.相关推荐
- 微信扫码登录只能填一个授权回调域问题
背景 公司增加了个微信扫码登录,费劲千辛万苦终于把应用申请下来了,但遇到了一个头疼的事情:微信授权回调域只能写一个,且不支持通配.这下可好了,总不能把每个需要微信登录的二级域名都申请一个应用吧?而且一 ...
- java中限制多人登录的_Spring Boot + Spring Security 防止用户在多处同时登录(一个用户同时只能登录一次)及源码分析...
网上很多文章的实现方法写得比较复杂 这里介绍一个简单的方法. 实现 @Configuration @EnableWebSecurity public class SecurityConfigurati ...
- web app 第三方登录-微博登录(一)
在最近参与的一个android项目中,使用的是web app 的形式,就是android提供容器,但是里面的内容都由H5实现.由于不是原生的app,给集成第三方登录带来一些困难.下面把集成的过程分享下 ...
- php 只需qq 获取用户信息,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...
//里客云资源站,likeyunba.com //BY TANKING // header header("Content-Type:application/json"); err ...
- 基于android校园订餐APP,简单实现登录注册功能(SharedPreferences)
基于android校园订餐APP,简单实现登录注册功能(SharedPreferences) 欢迎浏览本篇文章 界面效果图 页面设计代码 源代码 欢迎浏览本篇文章 大家好! 这是小编首次在博客上写的文 ...
- shiro实现APP、web统一登录认证和权限管理
先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了w ...
- APP的注册和登录功能设计
一.为什么需要注册和登录? 是否需要注册和登录的关键取决于产品形态. 如果用户注册登录对于用户需求.产品功能.商业模式本身带不来任何价值的话,就没必要设计这样的功能.比如一些实用工具类的产品:计算器. ...
- php技术 网站PC端用手机APP扫码实现登录
去年做的功能,整理一下分享出来 如淘宝,腾讯等网站登录页面,都有APP扫码登录这个功能,去年也做了一个,基于自己的APP实现, 并非第三方登陆. 思路:1. 生成一个二维码, 二维码链接带有密钥. 2 ...
- Android App实现第三方微信登录
Android App实现第三方微信登录 Android App实现第三方微信登录 1.下载微信官方最新的sdk,集成到app中.如下图: 2.注册到微信 可以在app的某个Activity的onCr ...
最新文章
- 计算机的存储系统,全方面、最详细
- python写一个服务_写一个Python的windows服务
- 笔记-项目整体管理-项目工作说明书
- HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By
- douchat 4.0 新版发布,助力小程序后台开发
- LeetCode 662 二叉树最大宽度
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第36篇]Index Calculus算法
- 专家答疑:在ERP系统中确保销售订单准确性
- RWMutex的一道面试题
- 【面试题】HashMap 面试 21 问
- oss图片尺寸调用方式_CDN百科11 | 如何用CDN加速OSS源站资源
- Qt Creator 配置Msvc 2012的调试器
- 中学办公室计算机管理制度,中学多媒体室使用管理制度条例
- Java项目:淘淘商城
- 计算机网络中的www服务,计算机网络基础练习题01
- 信息系统的风险评估过程与评估方法
- Web项目 引入Editormd
- iphone链接电脑无法在我的计算机显示,iphone连接电脑不显示信任怎么回事
- Cts框架解析(19)-设备状态的分类以及恢复模式的分类
- DFD数据流图的基本要素及易错点详细介绍