web-dev-qa-db-ja.com

Springブートは、組み込みサーバーのカスタムjsessionidを構成します

カスタムjsessionIdキーの設定など、サーブレットコンテキストを構成したい( Changing cookie JSESSIONID name を参照)

WARファイルの実行時にSpringBootServletInitializerを使用して、onStartup()servletContextを操作できると思います。ただし、new SpringApplicationBuilder().run()を使用して組み込みアプリケーションサーバーで実行すると、サーブレットコンテキストを操作するのに最適な場所がわかりません。

20
tkruse

Spring Boot 1.3の時点で、設定プロパティを簡単に設定できます。

スプリングブート1.3、1.4、1.5

server.session.cookie.name = MYSESSIONID

Spring Boot 2.x

server.servlet.session.cookie.name = MYSESSIONID

構成クラスを記述するよりもずっと簡単です。

セッション関連のプロパティの詳細については、 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html を参照してください。

41
JamieB

アプリケーションの構成でServletContextInitializer Beanを宣言します。

@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");
    }

}
24
Andy Wilkinson

春のセッションでは、クッキー名を変更したい場合は、これを行うことができます

@Bean
public DefaultCookieSerializer defaultCookieSerializer(){
    DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
    defaultCookieSerializer.setCookieName("mySessionId");
    return defaultCookieSerializer;
}

私は春のセッションソースでこれを見つけます

spring-session-1.2.1.RELEASE-sources.jar!/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.Java

    @Autowired(required = false)
public void setCookieSerializer(CookieSerializer cookieSerializer) {
    this.defaultHttpSessionStrategy.setCookieSerializer(cookieSerializer);
}
3
jozdoo