【讨论贴】重复登陆问题
web上的多用户使用同一帐号同时登陆问题如何解决?
我的方法:
<1> 数据库添加表OnlineUser(UserID,UserName,SessionID),session的timeout设为4分钟
<2> 登陆页表单提交到loginchecksrv这个Servlet中
先判断用户名、密码、验证码是否正确,然后查看OnlineUser表中是否有该用户,如果有就是重
复登陆,没有就OnlineUser表中添加该用户的UserID、UserName、SessionID信息,页面跳转到欢迎
页。
<3> 页面添加javascript脚本,当用户关闭浏览器时执行删除OnlineUser表中该用户以及销
毁sessionde操作。(我没有使用body的unload事件和window的onbeforeunload事件,因为这两个事
件在页面刷新时也会被执行,我的javascript脚本见附件)。
<4> 建立sessionListener当session的主动销毁(点页面退出按钮或使用×关闭浏览器)或session
到时(客户端死机重启等非法退出)的时候执行 <3>
我的问题:
<1> 如果用户打开主页,然后使用主页超连接打开另一页(此时有两页)时,如何处理使用×关闭浏
览器
<2> 在主页使用ctrl+N,然后在新建的主页点击退出按钮或使用×关闭浏览器后,原主页的用户仍然
在线问题。(如果我叙述的不清楚,请大家使用http://community.csdn.net登陆后作我说的操作来
理解一下)。
附件:
javascript
<!--
var s= "close ";
window.attachEvent( 'onunload ',function(){
if(s== "fresh "){
if(window.screenLeft> 10000){
window.open( "/test/quitsrv ", "系统退出 ", "toolbar=1,location=1,directories=1,status=1, "+
"menubar=1,scrollbars=1,resizable=1, "+
"top= "+(window.screen.availHeight-document.body.clientHeight)/2+
",left= "+(window.screen.availWidth-document.body.clientWidth)/2+
",width= "+document.body.clientWidth+
",height= "+document.body.clientHeight);
}
}
else{
window.open( "/test/quitsrv ", "系统退出 ", "toolbar=1,location=1,directories=1,status=1, "+
"menubar=1,scrollbars=1,resizable=1, "+
"top= "+(window.screen.availHeight-document.body.clientHeight)/2+
",left= "+(window.screen.availWidth-document.body.clientWidth)/2+
",width= "+document.body.clientWidth+
",height= "+document.body.clientHeight);
}
});
window.attachEvent( 'onbeforeunload ',function(){ s= "fresh ";});
-->
希望能给没法解决这个问题的人提供一些思路,更希望能完美解决重复登陆问题的高手给出完美的解决方案。
[解决办法]
帮顶,不清楚
[解决办法]
http://download.csdn.net/user/AreamArgentateOfWing
这里有你要的资源
[解决办法]
mark,
[解决办法]
建立listener,监听session的销毁,类似于统计在线人数的方式。你可以在listener里建立一个HashMap的对象保存已登陆用户详细信息。如果在HashMap里包含该用户,则表示已登陆,直接跳转。否则建立OnlineUser对象并以UserID为key放入你的监听listener的HashMap中。sessionDestroyed方法里remove掉UserID的OnlineUser对象。
这样就可以了。
[解决办法]
菜鸟 学习中
[解决办法]
好象是没有一个好办法解决 "真正的 " 在线(online)。
关掉IE就是一个,此时Session还没有过期.
------解决方案--------------------
dr_lou() :
如果你使用AJAX,监视onbeforeunload和onunload事件,就可以做到关闭浏览器立即断开session
[解决办法]
我使用DWR,是这样写的:
<body onbeforeunload= "closeOut() " onunload= "Logout.executeString( ' ') ">
function closeOut(){
if(event.clientX> document.body.clientWidth&&event.clientY <0||event.altKey)
Logout.executeString( " ");
}
[解决办法]
学习了...
[解决办法]
我的问题:
<1> 如果用户打开主页,然后使用主页超连接打开另一页(此时有两页)时,如何处理使用×关闭浏览器
如何处理使用×关闭浏览器?没明白你什么意思。
<2> 在主页使用ctrl+N,然后在新建的主页点击退出按钮或使用×关闭浏览器后,原主页的用户仍然在线问题。
点击退出按钮,你这个退出按钮是注销退出,还是关闭页面呢?
如果是关闭页面当然原主页的用户还是在线的。如果是注销退出,就清除session
大多数网站都是这么做的。用session