需求就是 不同意同一个账户同一时间登录系统。仅仅要有一个账户在线其它人就是不能用这个账户。

功能非常easy,过程非常纠结 。

这篇文章攻克了兼容IE、Firefox 浏览器下,不同IP 地址 同一用户同一时候登陆的解决的方法,包含应对浏览器没有正常关闭的情况。

说下解决过程,本来以为用session存取就好了,后来仅仅能在同一个浏览器内标签窗体好用。跨浏览器就不行。由于sessionId不一样。(经測试 跟sessionID 没关系 )

网上找了一些解决的方法。又是些监听器 又是写 方法的; 又是数据库加字段推断状态的。 。。。。都没用 。。。如今反倒认为 太复杂了 ,全然不是必需。

由于真的遇到了断电情况,数据库的字段就没办法改动状态了,直接Pass掉。至于关闭窗体的“X” 而不是选择了“退出”button这个功能能够通过JS 控制。轻松解决。

实现方法: 在action 中 加入静态变量 map 数组存储 登录的用户信息 ,先推断是否存在该用户信息的记录情况,有该用户信息就不让 登录了,没有加入到map。就这么简单。

第二个所谓的难点呢 就是假设浏览器选择了“X”button 而不是退出button。须要在页面加入JS 辅助 进后台 清理session 缓存 和 map 数据信息;触发退出方法清理session信息和Map 内的该用户信息。

(本地浏览器有3种,chrome /ie /firefox ; ie/firefox 已解决关闭窗体的“X” 功能;chrome 还未找到解决的方法,chrome 碰到的问题就是 用户登录进来之后 首先运行了以下的js 进后台清空session 信息 然后竟然又登录进来了。ie一開始也这样。后来加了ie浏览器推断就攻克了。假设高人看到了这篇文章,欢迎指点一二)。

$(window).bind('beforeunload',function(){

var isIE = /msid/i.test(navigator.userAgent) && !window.opera;

if(isIE){

var n = window.event.screenX - window.screenLeft;

var b = n > document.documentElement.scrollWidth -20;

if(window.event.clientX >360 && window.event.clientY < 0 || window.event.altKey){

//关闭事件

$.ajax({

url :"exitLogin.action", //后台action,清理掉session 数据

type:"post",

success:function(){

alert("您已退出登录");

}

});

}else{

//是刷新事件

}

}else{   //firefox

$.ajax({

url :"exitLogin.action", //后台action,清理掉session 数据

type:"post",

success:function(){

alert("您已退出登录");

}

});

}

});

最后由于session 超时的话 map 没有进行清理。用户登录的时候先要去map 中批对 信息,这样就没办法登录了。 所以再在 页面上加个定时器 。定时清理一下map 中的数据就能够了。

java 不同意同一账户不同IP 同一时候登录系统解决的方法 兼容IE Firefox的更多相关文章

  1. java正则表达式提取地址中的ip和端口号

    由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demo public class Test0810_1 { public static void ...

  2. java代码获取客户端的真实ip

    java代码获取客户端的真实ip protected String getIpAddr(HttpServletRequest request) { String ip = request.getHea ...

  3. java获取本机名称、IP、MAC地址和网卡名称

    java获取本机名称.IP.MAC地址和网卡名称 摘自:https://blog.csdn.net/Dai_Haijiao/article/details/80364370 2018年05月18日 1 ...

  4. 用Java来获取访问者真实的IP地址

    用Java来获取访问者真实的IP地址 转载 2016年06月07日 14:36:02 标签: 16497 编辑 删除 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAdd ...

  5. java单点登录系统CAS的简单使用

    转:http://blog.csdn.net/yunye114105/article/details/7997041 背景 有几个相对独立的java的web应用系统, 各自有自己的登陆验证功能,用户在 ...

  6. java J2EE与DiscuzX3.2的UCenter实现单点登录

    最近笔者在实现Java项目对discuz的整合.在此过程中,查了很多这方面的资料,发现网上并没有说得比较全面的文章.笔者博取众长以及自己在此过程中遇到的问题,写下来供大家参考,希望大家可以在这过程中少 ...

  7. Linux 禁止用户或 IP通过 SSH 登录

             一切都是为了安全,做到来着可知! 限制用户 SSH 登录 1.只允许指定用户进行登录(白名单): 在 /etc/ssh/sshd_config 配置文件中设置 AllowUsers ...

  8. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 对于代码你有编程感觉吗 很多人写代码往往是没有编程感觉的,也就是除了可以把功能按照固 ...

  9. 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?

    转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...

随机推荐

  1. PHP与memcache和memcached以及安装使用

    老规则,在作者寒冰讲之前我们要来明确memcache与memcached这两个东西到底是什么? 说法一: 两个不同版本的php的memcached的客户端 new memcache是pecl扩展库版本 ...

  2. 武汉科技大学ACM :1008: A+B for Input-Output Practice (VIII)

    Problem Description Your task is to calculate the sum of some integers. Input Input contains an inte ...

  3. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  4. startActivityForResult

    Activity提供了startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Ac ...

  5. 清除oracl中有主外键关联的表中的部分数据。

    1.禁用主外键BEGINfor c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||' ...

  6. SpringMVC——从HelloWorld

    学习SpringMVC——从HelloWorld开始   前言: 时隔十二年,中国女排最终过关斩将,用3:1的成绩证明了自己的实力,霸气夺冠,为中国赢得了一枚意义非常的金牌.这是一次全民的狂欢,一场视 ...

  7. 51单片机C语言学习笔记6:51单片机C语言头文件及其使用

    很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...

  8. mysql System Tablespace

    System Tablespace 数据文件配置: mysql> show variables like '%innodb_data_file_path%'; +---------------- ...

  9. C语言的一个关键字——static

      Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数. 1.Static修饰变量 按照作用范围的不同,变量分为局部变量和全局变量.如果用static修饰变量,不论这个变量是全局的 ...

  10. poj3177 Redundant Paths

    Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numb ...