处理 JSF Web 应用程序中的“会话已过期”,在 JBoss AS 5 中运行
2022-09-02 21:59:53
这个问题与我的另一个问题“当Java Web应用程序中的会话过期时如何重定向到登录页面?”有关。以下是我正在尝试执行的操作:
- 我有一个在 JBoss AS 5 上运行的 JSF Web 应用程序
- 当用户处于非活动状态(例如 15 分钟)时,如果用户在会话过期后尝试使用该应用程序,我需要注销用户并将其重定向到登录页面。
- 因此,正如“JSF注销和重定向”中所建议的那样,我实现了一个过滤器,该过滤器检查会话过期条件,并将用户重定向到会话超时.jsp页面(如果会话已过期)。
- 我已经在web.xml中的所有其他过滤器定义之上添加了SessionExpiryCheckFilter,因此我的会话到期检查将始终获得第一个命中。
现在我面临的挑战来了。由于我使用的是 JBoss AS,因此当会话过期时,JBoss 会自动将我重定向到登录页面(请注意,会话过期检查过滤器未被调用)。因此,在我登录后,我的会话ExpiryCheckFilter拦截了该请求,并且它看到一个会话可用。但是,它会引发异常javax.faces.application.ViewExpiredException: viewId:/mypage.faces - View /mypage.faces could not be restored.
以前有人遇到过这个问题吗?有什么想法可以解决这个问题吗?