web项目实现不能重复登录

admi_nistrator 2013-04-07 04:32:02
最近写了一个小的web项目,要实现用户不能重复登录的功能。我是给用户表添加了一个用来标记用户登录状态的字段(1、未登录 2、已登录)。每次用户登录时候会在action中先判断该用户的登录状态,如果是1则正常登录。否则提示该用户已登录,不能重复登录。当用户点击注销时候就会走action修改该用户的登录状态,然后跳转到登录页面。现在遇到一个问题就是:如果用户没有点击注销而是直接关闭浏览器,或者刷新浏览器就不能正常修改该用户的登录状态。也就是该用户下次就不能登录了。。。。
我是个菜鸟,现在遇到这个问题不知道该怎么处理。。。。求帮助。。哪位大侠帮忙指点一下。万分感谢
...全文
593 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bumpking 2013-04-08
  • 打赏
  • 举报
回复
为什么要在db保存登录状态呢? ps.非要这么做,1楼可行
bichir 2013-04-08
  • 打赏
  • 举报
回复
引用 9 楼 xingchensuifeng 的回复:
session记录你的用户登录状态,失效时改变状态。这个是否登录记录在数据库中,应该是有点问题的。你可以考虑下不这么做。
登陆状态不能存于数据库中,而且,不能限制用户重复登陆。要实现这个只有像WEBQQ的做法,当有重复登陆时就强制先登陆的下线(删除先登陆的SESSION)。
问梦千年 2013-04-08
  • 打赏
  • 举报
回复
session记录你的用户登录状态,失效时改变状态。这个是否登录记录在数据库中,应该是有点问题的。你可以考虑下不这么做。
安特矮油 2013-04-08
  • 打赏
  • 举报
回复
总的来说,如果登陆了就不让用户登陆这种来说可能会出现一些问题,因为在一些情况下你无法得到用户退出系统的事件。 1.提示用户,某某用户正在登陆使用。 2.session失效的时候注销用户的登陆
小蝸牛 2013-04-08
  • 打赏
  • 举报
回复
我想问为什么要这种业务
Inhibitory 2013-04-08
  • 打赏
  • 举报
回复
如果用户没有点击注销而是直接关闭浏览器,或者刷新浏览器就不能正常修改该用户的登录状态。 1. 自动登录:浏览器端用Cookie保存用户的登录信息,如用户名,密码。 2. 登录状态保存: a. 用Session在服务器端保存用户已登录的状态。 b. 用数据记录登录状态也可以,下次登录的时候,看看上次注销或者登录的时间(处理你正好遇到的这个问题)就可以了。但是浏览器端需要定时的发一个请求更新登录状态。
萧君 2013-04-08
  • 打赏
  • 举报
回复
利用利用利用利用Struts同步令牌同步令牌同步令牌同步令牌((((Token))))机制来解决机制来解决机制来解决机制来解决Web应用中的重复提交问题应用中的重复提交问题应用中的重复提交问题应用中的重复提交问题。。。。该方法的基本原该方法的基本原该方法的基本原该方法的基本原理是理是理是理是::::服务器端在处理到达的服务器端在处理到达的服务器端在处理到达的服务器端在处理到达的request之前之前之前之前,,,,会将会将会将会将request中的中的中的中的Token值与保存在当前用值与保存在当前用值与保存在当前用值与保存在当前用户户户户session中的令牌值进行比较中的令牌值进行比较中的令牌值进行比较中的令牌值进行比较,,,,看是否匹配看是否匹配看是否匹配看是否匹配。。。。在处理完该在处理完该在处理完该在处理完该request后后后后,,,,且在且在且在且在response发送给客户端之前发送给客户端之前发送给客户端之前发送给客户端之前,,,,将会产生一个新的将会产生一个新的将会产生一个新的将会产生一个新的 Token,,,,该该该该Token除传给客户端以外除传给客户端以外除传给客户端以外除传给客户端以外,,,,也会将用户也会将用户也会将用户也会将用户session中保存的旧的中保存的旧的中保存的旧的中保存的旧的Token进行替换进行替换进行替换进行替换。。。。这样这样这样这样,,,,如果用户会退到刚才的提交页面并再次提交的如果用户会退到刚才的提交页面并再次提交的如果用户会退到刚才的提交页面并再次提交的如果用户会退到刚才的提交页面并再次提交的话话话话,,,,客户端传过来的客户端传过来的客户端传过来的客户端传过来的Token值和服务器端的不一致值和服务器端的不一致值和服务器端的不一致值和服务器端的不一致,,,,从而有效地防止了重复提交地发生从而有效地防止了重复提交地发生从而有效地防止了重复提交地发生从而有效地防止了重复提交地发生。。。。
xxxxJustDoIt 2013-04-08
  • 打赏
  • 举报
回复
session,cookie机制呀,建议楼主去看看
unforgettable_7 2013-04-08
  • 打赏
  • 举报
回复
用session保存
u010170674 2013-04-07
  • 打赏
  • 举报
回复
好像有个监听session内容变化的监听器HttpSessionAttributeListener,可以百度看一下,可以实现单态登陆
caomaomr007 2013-04-07
  • 打赏
  • 举报
回复
楼主能不能给咱曾一分儿类,楼主大吉大利
seqwait 2013-04-07
  • 打赏
  • 举报
回复
可以定义一个最后操作时间:在用户进行数据查询或修改的时候更新最后操作时间,在查询用户信息的时候比较当前时间与用户操作时间,如果大于30分钟或1小时说明用户已经离线!!!
  • 打赏
  • 举报
回复
需要考虑两点 : 1、用户主动关闭浏览器 可以使用 window.onbeforeunload=function (e){ if( window.event.clientY < 0 || window.event.altKey){ //alert("你关闭了浏览器"); $.ajax({ url:"${ctx}/system/user/user!logout.action", type:"post", success:function(){} }); }else{ //alert("你正在刷新页面"); } } 2、session自动到期 可以写一个SessionListener 监听器 实现HttpSessionListener的sessionDestroyed() session销毁后重置你的字段。。

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧