开发者社区> 问答> 正文

java web系统,如何禁止同一用户重复登录?

系统是用Servlet+ExtJS写的,服务器是tomcat。
现在想在系统中实现防止同一用户重复登录,当一个用户已经在系统中登录后,如果再登录就弹出提示。
目前不能在数据库中加字段来验证用户的登录状态,所以想通过在服务器上维护一个Map,key是sessionID,value是用户名。当用户成功登录后就在MAP中加入一条记录。
在用户登录时将用户名和sessionID传到判断方法,来验证是否已经存在了记录。
目前基于的理论是,不同浏览器的sessionID不同,来做唯一验证。
现在不清楚的就是,在服务器上维护的这个MAP是否会占用很大的资源,系统的平均在线用户大概在200个左右。
烦请各位有过相关经验的指正一下错误。

展开
收起
落地花开啦 2016-03-26 15:00:44 5090 0
2 条回答
写回答
取消 提交回答
  • 专注物联网

    200个用户 能占用多少内存?
    一个sessionid 加上 用户名,每个字母占两个字节,100个也就200字节。这样1k就能有5个用户。
    200个用户40k!
    你这个存在一定的危险性!比如用户强制退出或者浏览器崩溃,服务器的sessionid还没有消失,这样就会在一段时间内无法登陆系统。如果session超时设的短一些,这样也会带来很多问题。
    如果是用户登录踢出上个用户会好些。

    2019-07-17 19:16:16
    赞同 展开评论 打赏
  • 喜欢技术,喜欢努力的人

    200个用户 能占用多少内存?
    一个sessionid 加上 用户名,每个字母占两个字节,100个也就200字节。这样1k就能有5个用户。
    200个用户40k!
    你这个存在一定的危险性!比如用户强制退出或者浏览器崩溃,服务器的sessionid还没有消失,这样就会在一段时间内无法登陆系统。如果session超时设的短一些,这样也会带来很多问题。
    如果是用户登录踢出上个用户会好些。

    2019-07-17 19:16:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载