gpt4 book ai didi

java - 使用 web.xml 和 setMaxInactiveInterval 设置 session 超时之间的区别

转载 作者:搜寻专家 更新时间:2023-11-01 01:34:06 25 4
gpt4 key购买 nike

我有一个要求,其中用户通过身份验证进入 session ,并且在 10 分钟不活动后, session 超时。一旦 session 超时,来自现在已过期 session 的任何进一步请求将被重定向到超时页面。我在这方面进行了研究,得出了两种不同的方法。

方法 #1:

web.xml 我有下面提到的代码...

<session-config>
<session-timeout>10</session-timeout>
</session-config>

方法 #2:

我在经过身份验证的页面中有下面提到的代码...

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

request.getSession().setMaxInactiveInterval(600);

现在我的问题是:

这两种方法有什么区别?哪个更好或推荐?

而且在使用方法 #2 时,如果最终用户离开经过身份验证的页面但尚未注销, session 是否在 10 分钟不活动后仍然超时?

最佳答案

可以在不同级别设置 session 超时:

  • 应用服务器中通常有默认设置,可以更改 - 它是所有应用程序或给定应用程序的默认设置(取决于服务器配置功能)。
  • 然后在应用程序中 descriptor - 您可以使用 web.xml 覆盖它 - 它将用于给定应用程序中的所有 session
  • 然后在应用程序代码中 - 您可以使用session.setMaxInactiveInterval() 覆盖它,它只会在该 session 中被覆盖

As Roman wrote :

no matter how you set it, it is invalidated by the container when timeout expires.

您应该避免编程方法(最后一种),因为它很容易错过某些 session 并且会获得默认超时,并且您会有不一致的行为。如果您想确保给定超时(业务需求)并且不想依赖服务器功能,请使用 web.xml

关于java - 使用 web.xml 和 setMaxInactiveInterval 设置 session 超时之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26183265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com