思路:

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. 计算机的存储系统,全方面、最详细
  2. python写一个服务_写一个Python的windows服务
  3. 笔记-项目整体管理-项目工作说明书
  4. HOL中的四种排序,Order By、Sort By、Distribute By、Cluster By
  5. douchat 4.0 新版发布,助力小程序后台开发
  6. LeetCode 662 二叉树最大宽度
  7. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第36篇]Index Calculus算法
  8. 专家答疑:在ERP系统中确保销售订单准确性
  9. RWMutex的一道面试题
  10. 【面试题】HashMap 面试 21 问
  11. oss图片尺寸调用方式_CDN百科11 | 如何用CDN加速OSS源站资源
  12. Qt Creator 配置Msvc 2012的调试器
  13. 中学办公室计算机管理制度,中学多媒体室使用管理制度条例
  14. Java项目:淘淘商城
  15. 计算机网络中的www服务,计算机网络基础练习题01
  16. 信息系统的风险评估过程与评估方法
  17. Web项目 引入Editormd
  18. iphone链接电脑无法在我的计算机显示,iphone连接电脑不显示信任怎么回事
  19. Cts框架解析(19)-设备状态的分类以及恢复模式的分类
  20. DFD数据流图的基本要素及易错点详细介绍

热门文章

  1. seo网站优化的金字塔模型
  2. mongodb与mysql连接_MongoDB连接数据库
  3. 100M和1000M网线做法
  4. ORA-01555错误解决
  5. Tf2.0+基于注意力的神经机器翻译训练发布过程
  6. 雷达信号处理&重学傅里叶变换(一):Radar cube &multidimensional Fourier transform
  7. 一些网络安全的工具软件的介绍
  8. Linux下多个进程可以同时打开同一个文件吗?文件描述符与打开文件的关系?
  9. C语言函数指针与NULL
  10. 写给在工厂上班的一封信