功能:当你在一台电脑上登录了账号,然后又在另外一台电脑上登录(同一个账号),就立马提示前一台账号下线通知,就和QQ等下线通知一样。
实现思路:将用户的登录信息保存在application和session内置作用域内, 然后在首页写个定时器,轮询某ajax方法(检查application和session是否相等,不相等则弹出“用户在其他地方登录信息”)。
示例代码:
1、登录时判断该用户的application是否存在,如果已经存在,换个其他值。
HttpSession session = ServletActionContext.getRequest().getSession(); ServletContext application = session.getServletContext(); if(application.getAttribute(t_user.getName())==null){ application.setAttribute(t_user.getName(), "1"); session.setAttribute(t_user.getName(), "1"); }else{ if(application.getAttribute(t_user.getName()).toString().equals("1")){ application.setAttribute(t_user.getName(), "2"); session.setAttribute(t_user.getName(), "2"); }else{ application.setAttribute(t_user.getName(), "1"); session.setAttribute(t_user.getName(), "1"); } }
2、Ajax代码:
public String reLoginAjax() throws Exception{ HttpSession session = ServletActionContext.getRequest().getSession(); ServletContext application = session.getServletContext(); System.out.println(session.getAttribute("userName").toString()+"开始监控了。。。。。。。"); msg = "true"; String userName = session.getAttribute("userName").toString(); if(!session.getAttribute(userName).equals(application.getAttribute(userName))){ msg = "false"; } return "success"; }
3、首页加定时器,因为是轮询application内容,所有消耗很少。
var timer = null; function reLogin(){ var loginName = "aaa"; var url = 'ReLoginAjax.action'; var params = { loginName:loginName }; jQuery.post(url, params, callbackFun1, 'json'); } function callbackFun1(data){ var msg = data['msg']; if(msg=='false'){ clearInterval(timer); alert("该用户在其他地方登录!"); window.top.location.href="login.jsp"; } } timer = setInterval(function(){ reLogin(); }, 5000);
相关推荐
本次我们关注的话题是如何实现一个账号仅允许一个用户登录的功能,这通常涉及到会话管理、数据库交互以及用户验证等多个关键点。这个功能对于提高系统的安全性至关重要,避免了同一账号在多个设备或浏览器同时登录,...
标题提到的“ASP帐号只能同时登陆一个”,指的是同一个账号在同一时间只能在一个设备或浏览器会话上登录,这通常被称为单点登录(Single Sign-On, SSO)机制。 单点登录的设计目的是为了增强安全性,防止同一账号被...
标题中的“利用Spring Security控制同一个用户只能一次登录”是指在基于Spring Security的Web应用程序中实现单点登录(Single Sign-On, SSO)的功能,确保同一时间只有一个设备或浏览器会话可以登录同一用户的账户。...
标题提到的"J2EE 用监听器实现同一用户只能有一个在线"是指通过使用Java Servlet API中的监听器来跟踪和管理用户的登录状态,以防止同一用户同时开启多个会话。 首先,我们需要理解这个问题的背景。通常,用户登录...
因此,本文将详细介绍如何解除Windows Server 2008 R2 远程桌面服务中对每个用户仅限一个会话的限制,从而实现多用户共享账户登录的需求。 #### 操作步骤 1. **打开远程桌面服务管理器** - 首先,登录到运行...
在我们开发商务软件的时候,常常会遇到这样的一个问题:怎样防止用户重复登录我们的系统?特别是对于银行或是财务部门,更是要限制用户以其工号身份多次登入。 利用SQL Server的全局临时表防止用户重复登录
本项目实现了一个特定的功能:确保同一账号在同一时间只能在一个地方登录,一旦有另一人在不同地点尝试登录,已登录的用户将被强制下线。这种设计模式被称为“会话独占”,它在许多在线服务中,特别是安全性要求较高...
本解决方案主要关注如何利用DWR来实现一个用户在同一时间只能登录一次的功能,类似于QQ的单点登录机制。 首先,我们需要理解DWR的基本工作原理。DWR允许JavaScript直接调用服务器端的Java方法,并将结果返回到...
总之,实现“J2EE限制同一账号同一时刻只能一个用户登录使用”是一个涉及会话管理、安全性、用户体验等多个方面的综合任务。通过合理的架构设计和技术选型,我们可以构建出高效且安全的单点登录系统。
综上所述,实现"同一个账号只能登录一次"涉及到多方面的技术和策略,包括会话管理、数据库交互、分布式系统支持以及安全措施。通过这些方法,可以有效地维护系统的稳定性和用户的安全体验。在实际开发中,需要根据...
在Java Web开发中,确保用户在同一时间只能在一个设备上登录是一项重要的安全性需求。这通常通过实现Session监听器来实现。本文将深入探讨如何利用Session监听器来防止同一用户在多个客户端同时登录。 首先,理解...
由于实验要求用户一次只能打开一个文件,因此需要跟踪当前打开的文件。当用户尝试打开新文件时,需要检查用户是否有权访问该文件,并更新打开文件内存块(AFD)来记录文件的打开状态、访问权限和读写指针。 4. **...
在实际的应用场景中,如果一个用户在一个终端登录了系统后,在另一个终端再次使用相同的用户名进行登录,这时候就需要考虑到安全性问题。例如,在银行系统或者一些重要的管理系统中,如果允许同一个账户在不同终端...
在本文中,我们将深入探讨如何使用 Shiro 实现单点登录(Single Sign-On, SSO),确保一个用户在同一时刻只能在一个地方登录。 单点登录是一种常见的安全机制,它允许用户在一次登录后访问多个相互关联的应用系统,...
在Java Web开发中,实现QQ登录功能并限制一个账号同一时间只能一个人登录,涉及到的关键技术包括用户会话管理、状态跟踪以及异常情况处理。以下是对这个功能实现的详细解析: 首先,我们需要一个全局的存储结构来...
在本文中,我们将深入探讨如何使用ExtJS框架实现一个用户登录功能。ExtJS是一个流行的JavaScript库,用于构建富客户端Web应用程序。以下是如何使用ExtJS创建一个简单的登录界面和处理登录逻辑的步骤。 首先,我们来...
2.设计实现一个图书管理系统。图书信息存放到一个数据库中。图书包含信息:图书号、图书名、作者、价格、备注字段。 要求:基于JSP+Servlet+JavaBean+JDBC+DAO的Web架构设计该系统,进一步了解并掌握如何对数据库...
在这个方法中,我们可以使用一个监听器来监听用户的登录状态,当用户登录时,监听器将检查用户是否已经登录,如果已经登录,则强制退出之前的session。 实现同一账号不能同时登录的关键是保存每个用户的唯session,...
这里我们探讨的是一种集群环境下的解决方案,它允许我们确保一个账号在同一时间只能在一个地方登录,即实现“单点登录”功能。这个方案主要基于Spring Boot和Redis技术栈来实施。 **Spring Boot** 是一种基于Java的...