论坛首页 Java企业应用论坛

限制多窗口重复登陆

浏览 23604 次
精华帖 (9) :: 良好帖 (2) :: 新手帖 (11) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-12-28   最后修改:2009-12-28
其实很简单

你在客户端浏览器用AJAX每隔一段一时间对服务器进行一交请求(如:每秒一次)

如果发现在这个session 之后还有同一个用户登陆,注消前一个session ,旧session客户端浏览器页面退出(有果还没有关闭),用最新的session

返正服务器端能保留一个用户一个session(一一对应),在每增加session前检查该用户有没有登陆
0 请登录后投票
   发表时间:2009-12-28  
kunee 写道
说来说去不就是少了个记录的地方吗

数据库是干什么用的


在高并发的场景下少查数据库(I/O)才是最终需要做到的
0 请登录后投票
   发表时间:2009-12-28  
引用
  我现在在想是否能将session ID保存到客户端硬盘的cookie上,即cookie.setMaxAge(N); N>0的方法。但是貌似session ID不能保存到持久化cookie上,不知道各位有没有什么办法?


通常session是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,这样我们信息共享的目的就达不到了,我们可以先把sessionid保存在cookie中,然后在新窗口中读出来,就可以得到上一个窗口SessionID了,这样通过结合JSESSIONID 这个cookie来实现跨浏览器访问。
0 请登录后投票
   发表时间:2009-12-28  
redwatch 写道
其实很简单

你在客户端浏览器用AJAX每隔一段一时间对服务器进行一交请求(如:每秒一次)

如果发现在这个session 之后还有同一个用户登陆,注消前一个session ,旧session客户端浏览器页面退出(有果还没有关闭),用最新的session

返正服务器端能保留一个用户一个session(一一对应),在每增加session前检查该用户有没有登陆

貌似这样做的压力也小不了
我们现在已经在组织研讨设计新UM架构,包括SSO的设计也可能redesign,建设跨HttpSession的缓存机制势在必行
既然不用HttpSession了,也就没必要一定要挂在JSESSIONID这棵树上吊死
0 请登录后投票
   发表时间:2009-12-28  
lydawen 写道
kunee 写道
说来说去不就是少了个记录的地方吗

数据库是干什么用的


在高并发的场景下少查数据库(I/O)才是最终需要做到的


原则是对的,但只是在用户登录时做一下我认为代价还是允许的
论坛是很典型的例子,论坛的访问量够大吧,论坛都做用户上次登录时间记录,我相信绝大部分应用这样做应该不是问题
0 请登录后投票
   发表时间:2009-12-29  
我的思路:
在用户表里增加三个字段:登陆时间、session标识、登陆标识(0,1)
用户登陆时如果登陆标识为0(未登录),则把登陆时间、sessionid保存db中并设置登陆标识为1
用户登陆时如果登陆标识为1(已登录),则取db中的登陆时间与当前时间做差,如果小于5min则提示不能登陆(如果想把之前登陆的T掉,可以在用户登陆时把sessionid和session对象保存在application中,当用户登陆时如果登陆标识为1,则从db中取登陆用户的sessionid,根据此sessionid从application中取得session对象并销毁)
-----------------------------
在项目里加个session监听,当session销毁事件触发时,取得销毁的sessionid,并把db中对应记录的登录标识改为0
0 请登录后投票
   发表时间:2009-12-31   最后修改:2009-12-31
this is what i am looking for
http://www.iteye.com/topic/135066
http://www.iteye.com/topic/551498
0 请登录后投票
   发表时间:2010-01-01  
非常简单的解决方法,使用cookie技术:
在服务器上作一个filter, 获得当前jsession内容,然后新建个cookie 假设为dsession  把jsession+当前time 组合编码 保存到client,  此cookie保存时间为 5分钟
1, 假设新开游览器在5分钟内, 则存在dsession ,那么的话,client可以知道判断出对方不可以使用此功能,
2, 如果在5分钟外,则不存在 ,则新建dsession
0 请登录后投票
   发表时间:2010-01-01  
忘记说了, 那个dsession保存的部分上次session串是用来比较是否是新开游览器的
0 请登录后投票
   发表时间:2010-09-08  
可以考虑使用Application,还可以防止客户多浏览器登录,或者同一帐号,同时多次登录。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics