Spring boot 为嵌入式服务器配置自定义 jsessionid

2022-09-01 14:57:26

我想配置我的 servlet 上下文,例如设置自定义 jsessionId 密钥(请参阅更改 cookie JSESSIONID 名称)

我相信我可以在运行WAR文件时使用,操纵.但是,当我在嵌入式应用程序服务器上运行时,使用 ,我不知道操作 servlet 上下文的最佳位置。SpringBootServletInitializerservletContextonStartup()new SpringApplicationBuilder().run()


答案 1

Spring Boot 1.3开始,您可以简单地设置一个配置属性;

弹簧靴 1.3, 1.4, 1.5

server.session.cookie.name = MYSESSIONID

弹簧靴 2.x

server.servlet.session.cookie.name = MYSESSIONID

比编写配置类简单得多。

有关更多与会话相关的属性,请参阅 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


答案 2

在应用程序的配置中声明 Bean:ServletContextInitializer

@Bean
public ServletContextInitializer servletContextInitializer() {
    return new ServletContextInitializer() {

        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.getSessionCookieConfig().setName("yourCookieName");
        }
    };

}

或者,您的应用程序类本身可以实现:ServletContextInitializer

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application implements ServletContextInitializer {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.getSessionCookieConfig().setName("yourCookieName");
    }

}

推荐