如何停止已登录用户从其他浏览器登录

我在我的应用程序中有一个登录function,我可以将用户存储在会话中,如果他已经在同一个浏览器上登录,我也可以阻止用户登录..但是如果一个signedIn用户试图再次从不同的浏览器登录我无法阻止他。

这是代码..

我正在使用这个

session=getThreadLocalRequest().getSession(true); User loggedInUser = (User) session.getAttribute("user"); 

现在,如果loggedInUser尝试从另一个选项卡中的SAME浏览器进入应用程序,则此loggedInUser具有用户对象(这对我有用)

但是如果loggedInUser尝试从不同的浏览器进入应用程序(因此它对我不起作用),则此loggedInUser为null

这是代码..

  public User signIn(String userid, String password) { String result = ""; ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); MySQLRdbHelper rdbHelper = (MySQLRdbHelper) ctx.getBean("ManagerTie"); User user = (User) rdbHelper.getAuthentication(userid, password); if(user!=null) { session=getThreadLocalRequest().getSession(true); User loggedInUser = (User) session.getAttribute("user"); if(loggedInUser != null && user.getId() == loggedInUser.getId()){ user.setId(0); }else{ session=getThreadLocalRequest().getSession(true); session.setAttribute("user", user); } } return user; 

我正在使用JAVA,GWT

是的,通过在服务器端存储static映射,将User Id存储为密钥,将Sessionvalue

这是我的包直接工作的代码。

 class SessionObject implements HttpSessionBindingListener { User loggedInUser; Logger log = Logger.getLogger(SessionObject.class); public SessionObject(User loggedInUser) { this.loggedInUser=loggedInUser; } public void valueBound(HttpSessionBindingEvent event) { LoggedInUserSessionUtil.getLogggedUserMap() .put(loggedInUser, event.getSession()); return; } public void valueUnbound(HttpSessionBindingEvent event) { try { LoggedInUserSessionUtil.removeLoggedUser(loggedInUser); return; } catch (IllegalStateException e) { e.printStackTrace(); } } } 

我开发时遵循的Java技巧和Java2s链接 。