应用程序属性“server.servlet.ession.timeout”在Spring Boot项目中不起作用

kzmpq1sx  于 2022-10-04  发布在  Spring
关注(0)|答案(6)|浏览(412)

根据Spring Boot的文档,可以通过设置来配置会话超时

server.servlet.session.timeout= 300s

application.properties文件中。在this postSpring Boot documentation中也是这样说的。但不幸的是,这对我不起作用。

有没有其他配置可以得到预期的结果?

kyxcudwk

kyxcudwk1#

您可以使用方法1:

server.servlet.session.timeout=30s
server.servlet.session.cookie.max-age=30s

它对我来说运行得很好

r6vfmomb

r6vfmomb2#

此问题的可能原因可能是使用了@EnableRedisHttpSession。正如此答案中所解释的:
通过使用@EnableRedisHttpSession,您告诉Spring Boot您希望完全控制基于Redis的HTTP会话的配置。因此,它的自动配置后退,并且server.servlet.ession.timeout没有任何影响。如果您想使用server.servlet.ession.timeout,那么您应该删除@EnableRedisHttpSession。或者,如果您想使用@EnableRedisHttpSession,那么您应该使用MaxInactiveIntervalInSecond属性来配置会话超时。

希望这能帮到什么人。

xzv2uavs

xzv2uavs3#

我张贴答案是因为这个场景对我来说是新的。而我也没有一步一步地找到适当的解决方案。根据M. Deinum的建议,我在WEB-INF文件夹下创建了一个web.xml文件。项目结构类似于

src
 |_ main
     |_ java
     |_ resources
     |_ webapp
         |_ WEB-INF
              |_ web.xml

web.xml中,我配置了<session-timeout>...</session-timeout>

我的web.xml是这样的

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">

    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>

</web-app>

现在我的Webapp在服务器上的会话时间正在根据我的配置工作。感谢M. Deinum

7y4bm7vi

7y4bm7vi4#

使用HttpSessionListener

server.servlet.session.timeout仅适用于嵌入式容器。

@Configuration
public class MyHttpSessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent event) {
        event.getSession().setMaxInactiveInterval(30);
    }
}
pcrecxhr

pcrecxhr5#

请遵循以下解决方案。

1.在application.properties文件中设置会话超时时间,如下所示。

server.servlet.session.timeout=01m

1.在WebSecurityConfiguration文件中指定无效会话URL,如下所示

http.sessionManagement().invalidSessionUrl("/sessionexpired");

1.在controller类中配置会话过期Map,如下所示

@RequestMapping(value = "/sessionexpired", method = RequestMethod.GET)
public ModelAndView sessionexpired(HttpServletRequest request,
         HttpServletResponse response) {

         return new ModelAndView("sessionexpired");

}
rwqw0loc

rwqw0loc6#

spring doc最新版本的SpringBoot使用以下属性。

server.servlet.session.timeout=30m

相关问题