在我的应用程序中,我有一个退出按钮,点击其中当前用户的会话被以下代码段无效...
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
我将用户重定向到另一个页面。
但是现在我想如果用户点击后退按钮,我会将他带到应用程序的起始页面而不是他访问的最后一页。 我有一个应用程序阶段侦听器,它将页面缓存相关的标头设置为“无”,现在我想要的是检测该用户会话是否已失效。 但我猜每当用户点击后退按钮时,它就会为用户创建一个新会话。有什么办法可以预防吗?
答案 0 :(得分:11)
如何在JSF 2中检测会话已失效?
检查用户是否requested a session ID is not valid。
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
// Session has been invalidated during the previous request.
}
它正在为用户创建一个新会话。有什么方法可以阻止它吗?
不要让您的应用程序代码创建会话。当您的应用程序需要在会话中存储某些内容时,将隐式创建会话,例如视图或会话范围的bean,或<h:form>
等的视图状态
我有一个应用程序阶段侦听器,它将与页面缓存相关的标头设置为“无”
servlet过滤器是一个更好的地方。另请参阅Avoid back button on JSF web application