最近的web项目里要求同一账号不能同时登陆!
想了几种方法都有漏洞,谁有可行性方案
想了几种方法都有漏洞,谁有可行性方案
解决方案 »
- Spring security UserDetailService有什么用
- java socket 异步 双工 长连接
- 【急】java上传文件jsp页面跳转文件上传
- responseXML
- 关于Hibernate多张表查询的问题~
- hibernate中的一对多关系,如何通过count(*)获得我想要的子类的总和
- 困绕了我N久的一个hibernate问题,在线等各位大侠帮忙!!
- 100分问个性能瓶颈的问题,求大神帮助
- Spring怎么实现数据隔离?
- 未使用注解的web_service_dao层配置流程
- jpa(hibernate3.5.1)延时加载
- Servlet execution threw an exception,配置struts报错,帮忙看看是什么原因
情况之二:第一个用户登录了,第二个用户登录挤掉第一个。
针对于第一种情况,可以在数据库设置用户状态,也可以在缓存,这个很容易实现,现在讨论浏览器异常关闭
的情况如何处理
可以考虑以下3个方法:
1。session失效,实现比较简单,也很保险,但缺点是实时性太差。
2。ajax轮询,也就是在客户端写个定时器,定时通过ajax方式发送一个信号到服务端,当服务端过了最大时间都没有接收到信号说明客户端已经关闭。
3。客户端用一个脚本监测是否关闭JScript code
window.onbeforeunload = function onunload_handler(){
//浏览器关闭的时候会执行到此处
//处理用户信息,使之变成离线状态
}
IE fireFox支持
我原来也遇到过这个问题,公司是用的是SSO。
再利用JS的BeforeUnload事件处理
项目在用的
正在想别的好方法
楼主你有好方法了分享一下。
1如果能够要求用户必须支持cookie的话 登录成功后用户本地保存一个令牌
每次请求都读取cookie令牌信息
如果令牌过时则需重新登录
2把令牌放在SESSION里 然后最新令牌信息进行持久化 如果SESSION里的 比持久化的信息老 就说明需要重新登录了
Implementations of this interface are notified of changes to the list of active sessions in a web application.
$(document).ready (function()
{
window.onbeforeunload=function (){
clearLblErr();
if((window.event.screenX - window.screenLeft) > (document.documentElement.scrollWidth-20) || window.event.clientY < 0 || window.event.altKey)
{
$.ajax({
async:false,
url: "AbandonSession.aspx",
cache: false,
success: function(msg){
}
});
} };
}
);
LZ参考一下~