码迷,mamicode.com
首页 > 编程语言 > 详细

java 不允许同一账户不同IP 同时登录系统解决办法 兼容IE Firefox

时间:2014-06-15 08:38:07      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:java 不允许 用户同时登录一个账号   java   js 解决 关闭窗口事件   

需求就是 不允许同一个账户同一时间登录系统。只要有一个账户在线其他人就是不能用这个账户。


功能很简单,过程很纠结 。



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


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


网上找了一些解决办法。又是些监听器 又是写 方法的; 又是数据库加字段判断状态的。 。。。。都没用 。。。现在反倒觉得 太复杂了 ,完全没必要。


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


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


第二个所谓的难点呢 就是如果浏览器选择了“X”按钮 而不是退出按钮。需要在页面添加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,布布扣,bubuko.com

java 不允许同一账户不同IP 同时登录系统解决办法 兼容IE Firefox

标签:java 不允许 用户同时登录一个账号   java   js 解决 关闭窗口事件   

原文地址:http://blog.csdn.net/hejiakuo/article/details/30252027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!