我该如何在web.xml中设置会话超时时间(以秒为单位)?

8

我有一个需求,需要将会话超时设置为40秒。我们通常保持20分钟。

但是我的当前应用程序要求将会话超时设置为40秒。web.xml只接受整数值为1,但不接受0.6。有没有办法解决这个问题?我们的Java Web应用程序运行在Apache Tomcat服务器上。

那么,如何在web.xml中以秒为单位设置会话超时时间呢?


访问https://dev59.com/S2Up5IYBdhLWcg3wRWFD获取更多信息。 - harunaydin28
5个回答

14

使用部署描述符,您只能以分钟为单位设置超时时间:

<session-config>
    <session-timeout>1</session-timeout>
</session-config>


但是使用 HttpSession API,你可以在servlet容器中以秒为单位设置会话超时时间:

HttpSession session = request.getSession();
session.setMaxInactiveInterval(40);

建议阅读:部署描述符元素


6
这将被视为40分钟而不是秒。 - Deepu--Java
@DeepakTiwari 已修复。 - informatik01
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html 表示 setMaxInactiveInterval 用于指定以秒为单位的时间。 - julodnik

3

在web.xml文件中,您可以在几分钟内提供

<session-config>
    <session-timeout>Minutes</session-timeout>
</session-config>

但是您可以通过程序以秒为单位提供值

HttpSession session = request.getSession();
session.setMaxInactiveInterval(20*60);

0
1) Timeout in the deployment descriptor (web.xml)

在“session-config”元素中指定超时值,以“分钟”为单位。

标记

<web-app ...>
    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>
</web-app>

以上设置适用于整个 Web 应用程序,如果客户端在 20 分钟内没有发出任何请求,会话将被容器终止。
2) Timeout with setMaxInactiveInterval()

- 您可以手动为特定会话指定“秒”超时值。

Java

HttpSession session = request.getSession();
session.setMaxInactiveInterval(20*60);

上述设置仅适用于调用“setMaxInactiveInterval()”方法的会话,并且如果客户端在20分钟内没有发出任何请求,则会话将被容器终止。

0

你可以通过 "setMaxInactiveInterval()" 来覆盖会话超时。

HttpSession session = request.getSession();
session.setMaxInactiveInterval(20000);

这里将以毫秒为单位计算时间,意味着在接下来的20秒内会话将过期。


2
setMaxInactiveInterval 接受以秒为单位的值。 - Ramzah Rehman

0

如何在web.xml中设置会话超时时间(以秒为单位)? 解决方案:尝试这个 const token = jwt.sign({ _id: user._id }, process.env.JWT_SECRET) // 在此处添加您的令牌 res.cookie('Cookie', token, { expire: new Date(Date.now()+ 9999)})


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接