思路:

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互斥登录,只能登录一个.相关推荐

  1. 微信扫码登录只能填一个授权回调域问题

    背景 公司增加了个微信扫码登录,费劲千辛万苦终于把应用申请下来了,但遇到了一个头疼的事情:微信授权回调域只能写一个,且不支持通配.这下可好了,总不能把每个需要微信登录的二级域名都申请一个应用吧?而且一 ...

  2. java中限制多人登录的_Spring Boot + Spring Security 防止用户在多处同时登录(一个用户同时只能登录一次)及源码分析...

    网上很多文章的实现方法写得比较复杂 这里介绍一个简单的方法. 实现 @Configuration @EnableWebSecurity public class SecurityConfigurati ...

  3. web app 第三方登录-微博登录(一)

    在最近参与的一个android项目中,使用的是web app 的形式,就是android提供容器,但是里面的内容都由H5实现.由于不是原生的app,给集成第三方登录带来一些困难.下面把集成的过程分享下 ...

  4. php 只需qq 获取用户信息,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...

    //里客云资源站,likeyunba.com //BY TANKING // header header("Content-Type:application/json"); err ...

  5. 基于android校园订餐APP,简单实现登录注册功能(SharedPreferences)

    基于android校园订餐APP,简单实现登录注册功能(SharedPreferences) 欢迎浏览本篇文章 界面效果图 页面设计代码 源代码 欢迎浏览本篇文章 大家好! 这是小编首次在博客上写的文 ...

  6. shiro实现APP、web统一登录认证和权限管理

    先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了w ...

  7. APP的注册和登录功能设计

    一.为什么需要注册和登录? 是否需要注册和登录的关键取决于产品形态. 如果用户注册登录对于用户需求.产品功能.商业模式本身带不来任何价值的话,就没必要设计这样的功能.比如一些实用工具类的产品:计算器. ...

  8. php技术 网站PC端用手机APP扫码实现登录

    去年做的功能,整理一下分享出来 如淘宝,腾讯等网站登录页面,都有APP扫码登录这个功能,去年也做了一个,基于自己的APP实现, 并非第三方登陆. 思路:1. 生成一个二维码, 二维码链接带有密钥. 2 ...

  9. Android App实现第三方微信登录

    Android App实现第三方微信登录 Android App实现第三方微信登录 1.下载微信官方最新的sdk,集成到app中.如下图: 2.注册到微信 可以在app的某个Activity的onCr ...

最新文章

  1. 小程序第三方框架对比 ( wepy / mpvue / taro )
  2. TCP三次握手详解及释放连接过程
  3. Java 按位运算符(,|,^,,)
  4. Linux下画原理图和PCB
  5. c语言编写pdf,编写并运行C语言程序.pdf
  6. es6 Symbol iterator接口
  7. python数据结构-列表-1
  8. map和json数组以及JSON对象和的区别以及相互转换
  9. 将图片url转file类型
  10. WordPress收费下载插件Erphpdown v11.0
  11. 神经系统图 基本结构图,神经系统结构图示意图
  12. HDLBits—Exams/ece241 2014 q7a
  13. 情人节快乐 2008 追赶情人的情人节
  14. 20145212《Java程序程序设计》课程总结
  15. 【引语练习题】Ask questions politely
  16. OpenSSL与CA认证
  17. vs2017c语言一闪而逝6,Visual Studio IDE编写程序时不显示窗口或窗口一闪而逝的解决方法...
  18. CSS绘制气泡对话框样式(有边框)
  19. 怎么设置uboot从u盘启动linux,RT5350使用uboot从U盘启动linux顺利
  20. Optiver宣布成立主要战略投资团队

热门文章

  1. [nRF52832开发板:Nordic Thingy:52]Nordic Thingy:52到手
  2. oracle中查看pga大小,关于oracle pga大小限制
  3. 《RFID技术与应用》测试选择题
  4. 22种设计模式——原型模型
  5. 饮食干预减轻癌症治疗相关症状和毒性
  6. java基础面试题 一
  7. MATLAB学习七(二):数组比较sortrows
  8. 类,__dift__,__len__,__add__,__new__,__init__
  9. RabbitMQ and Oslo.messaging
  10. 修改so文件的关键方法