カスタムjsessionIdキーの設定など、サーブレットコンテキストを構成したい( Changing cookie JSESSIONID name を参照)
WARファイルの実行時にSpringBootServletInitializer
を使用して、onStartup()
でservletContext
を操作できると思います。ただし、new SpringApplicationBuilder().run()
を使用して組み込みアプリケーションサーバーで実行すると、サーブレットコンテキストを操作するのに最適な場所がわかりません。
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 を参照してください。
アプリケーションの構成で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");
}
}
春のセッションでは、クッキー名を変更したい場合は、これを行うことができます
@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);
}