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