【问题标题】:Why is my httpsession expiring?为什么我的 httpsession 过期了?
【发布时间】:2012-11-08 12:17:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: jsf primefaces glassfish httpsession


    【解决方案1】:

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

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

    详细了解元标记here

    如果你想实现空闲监视器,我建议你看看&lt;p:idleMonitor&gt;Primefaces showcase - IdleMonitor

    【讨论】:

    • 非常感谢!它解决了我的问题 :) 我认为使用元标记可以保持会话处理的行为相同。
    猜你喜欢
    • 2011-05-08
    • 2015-12-28
    • 2020-08-12
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多