HttpSessionListener挺有用,用它统计当前在线的用户的人数。用户打开一个窗口时,系统将调用HttpSessionListener的sessionCreated方法,在此方法里边将登陆用户增加到SESSION中,在用户关闭BROWER时,调用HttpSessionListener的sessionDestroyed方法,将用户从SESSION中删除,
但是当我关闭BROWER时,HttpSessionListener的sessionDestroyed方法并没有调用.
HttpSessionListener的sessionDestroyed方法只有两个时候才被调用,第一个时候是SESSION超时的时候会调用,第二个时候手动调用session.invalidate()方法时会调用.
为了解决在关闭窗口时删除session,可以通过js
在浏览器关闭的时候open出一个隐藏的窗口来注销session,注销后再close这个页面
<script>
function window.onbeforeunload()
{
if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
{
window.open('out.jsp','','height=100,width=100,top=5000,left=5000,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no, status=no')
}
}
</script>
out.jsp
----------------------------
<%
//这里注销session
%>
<script>
window.close();
</script>
因为现在很多拦截弹出窗口的插件,所有可以用一个xmlhttp
//用xmlhttp去注销,不开新窗口
<script>
function window.onbeforeunload()
{
if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "out.jsp", false);
xmlhttp.send();
}
}
</script>
这个方法确实可以实现删除原来的session.
不过却发现同时会生成另一个session.不过这个可以在自己的代码里面自己判断一下实现他。
来自:http://blog.sina.com.cn/s/blog_6145ed810100fohs.html
分享到:
相关推荐
一旦用户id相同而sessionid不同,即表明该用户在其它地方登陆, 当前登陆无条件注销 注销过程为:将当前session失效,转到登陆页面, 提示用户该用户id已在哪台机器什么时间登陆了,当前登陆已注销 web.xml添加...
在IT行业中,用户登录系统是应用的核心组成部分,它涉及到用户的身份验证、权限管理以及安全控制。"防止用户重复登录"这一话题,主要关注的是如何确保单一账号在同一时间只能在一个设备或浏览器会话中进行有效登录,...
总的来说,Web单点登录并禁止多用户登录的实现涉及多个层面的技术和策略,包括会话管理、权限控制、异常检测和响应机制,这些都是构建安全、高效网络服务的重要组成部分。通过合理的系统设计和实现,可以有效保护...
本文将深入探讨"laravel-single-session"这个软件包,它专为Laravel设计,用于防止用户同时在多个设备或浏览器上登录,确保每个用户仅能拥有一个有效的会话。 首先,我们来理解一下标题中的"防止用户多次登录"。在...
### ASP.NET中防止用户多次登录的方法 在ASP.NET应用程序中,确保用户不会同时在多个位置登录对于维护数据安全性和系统一致性至关重要。本文将详细介绍几种在ASP.NET中实现防止用户多次登录的技术方法,并对每种...
在IT领域,多用户登录权限是一项重要的功能设计,它允许多个用户访问同一系统或应用,同时根据各自的权限进行操作。这种设计广泛应用于企业级软件、网络服务和云计算平台,以确保数据安全和工作流程的高效性。在此,...
QQ多用户登录器是一款专为QQ用户设计的实用工具,它允许用户在同一设备上同时登录并管理多个QQ账号,极大地提升了工作效率和社交便利性。在本文中,我们将深入探讨这款登录器的功能、工作原理以及使用技巧,帮助你更...
以下是对防止一个用户登录多次的方法的详细说明: 1. **检查Application对象**: 当用户尝试登录时,首先会检查Application对象,这是一个全局性的存储区域,可供整个Web应用程序共享数据。开发者可以将已登录用户...
其基本思路是:当用户登录时,将其用户名存储到`Cache`中,并设置过期时间;当用户尝试再次登录时,检查`Cache`中是否存在该用户的记录,如果存在,则拒绝登录请求并提示用户已经在线。 #### 关键技术点 1. **缓存...
然而,“Win8.1远程桌面多用户登录补丁”就是为了打破这个限制而设计的。 该补丁的目的是修改Windows 8.1的远程桌面服务设置,使其能够支持多个用户同时进行远程桌面连接。它通过调整系统内部的配置文件和注册表项...
7. **并发控制**:在多用户环境下,需考虑并发问题,如使用事务处理来确保数据的一致性。当多个请求同时操作同一用户的数据时,通过SQL的锁定机制来避免数据冲突。 通过以上步骤,我们可以有效地防止用户在多个设备...
在我们开发商务软件的时候,常常会遇到这样的一个问题:怎样防止用户重复登录我们的系统?特别是对于银行或是财务部门,更是要限制用户以其工号身份多次登入。本文介绍了使用SQL的全局临时表防止用户重复登录。
4、如何防止一个用户同时使用多个设备登录? 将token存储在redis中 方案: 登陆时将token和refresh_token存储在redis中, 以token/refreshToken + 用户id为键,并在redis更新refresh_token的刷新次数为0(以...
5. **单点登录(Single Sign-On, SSO)**:在多应用环境中,单点登录允许用户在一个系统登录后,自动在其他关联系统中也获得登录状态。SSO系统通常会维护一个中央认证服务,当检测到新的登录尝试时,会先检查已有的...
2. **令牌机制**:可以使用JWT(JSON Web Tokens)或其他类型的令牌,一旦用户登录,服务器返回一个有效的令牌。客户端在后续请求中携带此令牌,服务器通过验证令牌来确认用户身份。如果检测到同一令牌的多个登录,...
Windows Server 2008 默认情况下只支持一个管理员用户登录,若要实现多用户同时远程登录,需要安装终端服务并进行相应的配置。下面将详细介绍如何实现多用户同时远程登录。 首先,需要安装终端服务。打开控制面板...