我必须确保我的应用程序的唯一会话,因此如果用户通过Chrome浏览器登录我的应用程序然后通过Firefox浏览器登录,我的应用程序必须注意到用户还有其他打开的会话。
现在我将我的bean设置为ApplicationScope管理在登录方法中的这个信息:
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().getApplicationMap().put("userCode" + userCode, user.getUserCode());
所以当用户使用其他浏览器登录时,我的应用程序将userCode与
进行比较context.getExternalContext().getApplicationMap().get(userCode)
如果userCode存在,则:
context.getExternalContext().getSessionMap().clear();
context.getExternalContext().invalidateSession();
但还不够,因为第一次会话仍然有效。 是否有可能破坏浏览器之间的所有会话?