关于同一用户不能同时登录问题的探讨(1/2)

前言

  最近做项目的这块,客户要求是同一用户不能同时登录,对这个问题未加深刻考虑便爽快应许了。可后来就扒瞎了,正所谓外面豪气盖天,回家咬牙打滚,都怪自己开窍晚......当时想当然的是session放到application中,全局控制拉到,在登录和退出的时候进行修改,要是用户不点退出按钮,异常退出的话,再做个session监听也就拉到了呗!

  可是我错了,我抓心挠肝的真心错啦!这session的监听,destroy方法咋还等个30分钟才触发呢,真是服了气了!

最近才有时间整理这些东西,顺便总结一下!

正文

先上大菜,理论的东西会在《关于同一用户不能同时登录问题的探讨(2/2)》写上,也没多少。

一:设置web.xml中的Attribute监听(个人感觉Attribute监听比session监听更好用些,它监听的是Attribute的动作,类似是监听到了session在登录和退出操作中的动作,当然如果用session监听的话也是可以的,你要考虑登录,退出的操作,以及destroy的30分钟或者更长的滞后性);

二:做一个只有登录后才能看到的公共页面jsp文件中,采用异步的方法访问control,采用几秒访问一次(setInterval或者递归的setTimeout),每次访问就设定一次session的有效时长,一旦异常退出或者退出,这个轮询就会断开,到时候会在短时间内做出响应,写到这,相信大家都明白了吧,也是取巧啊。

咱这也是没法子呀,至今在网上没找到合适的解决方案,都是卡到了异常退出那了,还有说做浏览器监听的,嗯,在浏览器关闭前一刻发个请求,关了session,可是可是万恶的浏览器兼容问题呀,哪里容忍我们如此呢,浏览器监听这个法子不咋灵,不过如果浏览器固定的话,也是一个不错的解决办法呀!

代码部分

项目结构:

关于同一用户不能同时登录问题的探讨(1/2)

代码我上传到csdn上了啊,不需要积分的,有需要的看官,可以猛力的点击一下:下载

上一篇:CLR via C# 笔记 -- 特性(18)


下一篇:centos 系统时间的同步