0

我对 JSF 很陌生,遇到了一个有趣的问题。我有一个 Web 应用程序,指定了会话超时,即使我执行操作,会话也会过期。据我所知,每个新请求都会重新启动超时计数器,但这并没有发生。另外,在开发过程中我注意到,在超时(重定向到登录页面)之后,如果我重新加载页面,会话仍然有效。相同的会话 ID,计数器仍在运行...我不知道出了什么问题,我正在使用 Glassfish 和 PrimeFaces。

我搜索了很多,甚至试图捕捉 ViewExpiredException,但没有运气。重定向是使用

<meta http-equiv="refresh" content="#{session.maxInactiveInterval};url=login.jsf?reason=expired>

方法。也许我在 web.xml 中遗漏了一些明显的东西,我没有想法。

请给我一些建议,非常感谢!

4

1 回答 1

2

您使用的方法不是实现会话超时的最佳选择,原因是元标记会在特定时间间隔刷新页面,在您的情况下,它会在刷新时重定向到另一个 url,

即,如果值为 ,session.maxInactiveInterval5页面将在 5 秒内刷新并重定向到login.jsf?reason=expired,无论您执行何种操作。只有页面刷新才会重置计数器。

在此处了解有关元标记的更多信息

如果你想实现空闲监视器,我建议你看看<p:idleMonitor>Primefaces展示 - IdleMonitor

于 2012-11-20T12:53:40.660 回答