对于用户登录不能同时登录的做法,我的想法是:
一、策略
a、后面的登录踢掉前面的登录
b、给前面的登录提示或者将前面的登录重定向到登出页面
二、做法
a、在ServletContext中增加一个HashMap对象,记录登录的用户名及其对应的session对象,其中key为用户名,value为session对象,这样可以利用HashMap的特性快速找到key,尤其是用户量很大的情况下。
b、当一个用户输入正确的用户名和密码后,到a中生成的HashMap中查找该用户名,如果没有,则说明这个用户名还没有登录,将用户名及对应的session添加到HashMap对象中;如果有,则到c。
c、取得HashMap中key中对应的session对象,如果session对象不为空,则使用invalidate()方法清理该session对象,同时增加key的value置为现在session对象。
d、增加一个HttpSessionListener监听器,监听session摧毁时要执行方法,取得当前session对应的用户名在HashMap中session,比较两个session是否相同,如果是,则清除HashMap中的key。(如果不需要统计在线人数,d步可以没有)。
需要注意的一点:当执行invalidate()方法时会触发HttpSessionListener监听器的sessionDestroyed方法,在d步中,已经清除了key,所以c步中要添加key而不是修改key。
HashMap对象可以在应用初始启动时生成。
分享到:
相关推荐
### session保证两用户不能同时登陆一个账号 #### 知识点概述 在现代Web应用中,确保用户账户的安全性是一项非常重要的任务。特别是在涉及到多用户系统时,如何防止同一账户被多个用户同时登录是一个常见的需求。...
在Web开发中,确保同一用户不能同时在多个设备或浏览器会话中登录是常见的安全措施。这涉及到对Session的管理和监听。在这个场景中,我们主要关注的是如何利用Java的监听器技术来实现这一功能。首先,我们需要理解...
import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; import java.util.List;...import java.util.Map;...public class DialogHttpSessionListner implements HttpSessionListener { ...
以上就是实现“同一账号不能同时登录”的两种常见方法,结合使用可以提高系统的安全性和用户体验。在实际开发中,还需要考虑其他因素,如并发控制、异常处理和性能优化等,确保系统的稳定运行。
这种方法不仅能够提高系统的安全性,还能增强用户体验。当然,实际部署时还需要考虑更多细节,比如如何安全地管理会话ID或令牌,如何处理用户主动登出等情况。此外,还可以结合其他技术手段(如双因素认证)进一步...
在Web开发中,为了保障用户账号的安全性和系统的稳定性,经常会遇到需要限制同一用户账号不能同时在多个地方登录的需求。本文将详细解析一种通过ASP.NET实现同一用户名不能同时登录的解决方案。 #### 一、问题背景...
java Web 同一个用户名不能同时登陆的思路 ...java web开发一个帐号同一时间只能一个人登录 .doc java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能).doc ...session保证两用户不能同时登陆一个账号.doc
为了避免因长时间不操作而导致的资源占用问题,我们需要为用户的登录状态设置一个合理的过期时间。这里采用与 `Session` 相同的过期时间,以确保两者的一致性。 #### 四、注意事项 在实现过程中需要注意以下几点:...
Asp.net 中实现同一用户名不能同时登陆(单点登陆) Asp.net 中实现同一用户名不能同时登陆是一个常见的问题。很多开发者都会遇到这样的情况:如何使同一个用户在同一时间内只允许登录一次。常见的解决方案是使用...
综上所述,“同一账号禁止多人同时登陆”是一种常见的安全策略,通过会话管理和验证机制来防止未授权访问,保护用户信息。在设计和实施这种策略时,开发者需要平衡安全性和用户体验,确保系统的稳定运行。
本文将详细解析如何通过一种基于ASP.NET的解决方案,来防止同一账号被多个用户同时登录,以此保障系统的安全性和用户体验。 #### 核心概念与数据库设计 在实现防止同一账号同时登录的功能时,核心在于设计一个能够...
这样一般都会存在一个问题:如果用户没有正常退出系统,那么他接下来继续登录的时候,因为Session没有过期等问题,会被拒绝继续登录系统,只能等待Session过期后才能登录。本文介绍的方法是采用类似于MSN登陆的方法...
win10系统默认只能单用户远程桌面,通过替换termsrv.dll文件可以实现多用户同时远程登陆。 方法:可以用 Tiny Hexer工具打开你自己系统termsrv.dll文件,在windows\system32目录下 注意请复制出来后修改后替换,不...
当普通用户尝试登录XWindows时,系统可能弹出错误提示,表示登录会话仅持续了不到10秒。这可能是由于安装问题、磁盘空间不足或系统配置错误造成的。 2. **问题原因分析**: - **权限问题**:可能与用户的家目录...
同时,这个ID会通过cookie发送给用户的浏览器,以便后续请求时识别用户身份。 实现"一个账号仅允许一个用户登录"的步骤如下: 1. **用户验证**:当用户尝试登录时,系统需要检查输入的用户名和密码是否匹配数据库...
这个过程通常是用来修改或优化远程桌面服务的行为,例如启用不受官方支持的多用户同时远程登录功能。但需要注意的是,这可能涉及到系统安全性和稳定性问题,因为非官方的修改可能会导致未预期的错误或者安全风险。...
本文实例讲述了php 实现账号不能同时登陆的方法。分享给大家供大家参考,具体如下: 解决的思路是每当用户登陆时我们必需记录当前的用户id和session_id,如果有人在其它地方用此账号登陆时,我们把此用户id对应的...
标题中的“Windows XP SP3中远程桌面实现多用户登陆”是指在Windows XP Service Pack 3 (SP3)操作系统中,如何设置远程桌面功能以便允许多个用户同时进行远程登录,而不会强制当前本地用户注销。 描述中提到的问题...