Je souhaite configurer mon contexte de servlet, comme la définition d'une clé jsessionId personnalisée (voir Modification du nom JSESSIONID du cookie )
Je crois que je peux utiliser le SpringBootServletInitializer
lors de l'exécution d'un fichier WAR, en manipulant le servletContext
dans onStartup()
. Cependant, lorsque j'exécute sur un serveur d'applications intégré, en utilisant new SpringApplicationBuilder().run()
, je ne connais pas le meilleur endroit pour manipuler le contexte de servlet.
Depuis Spring Boot 1.3 , vous pouvez simplement définir une propriété de configuration;
Spring Boot 1.3, 1.4, 1.5
server.session.cookie.name = MYSESSIONID
Spring Boot 2.x
server.servlet.session.cookie.name = MYSESSIONID
Beaucoup plus simple que d'écrire une classe de configuration.
Voir https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html pour plus de propriétés liées à la session.
Déclarez un bean ServletContextInitializer
dans la configuration de votre application:
@Bean
public ServletContextInitializer servletContextInitializer() {
return new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.getSessionCookieConfig().setName("yourCookieName");
}
};
}
Alternativement, votre classe d'application elle-même peut implémenter 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");
}
}
avec la session de printemps, si vous voulez changer le nom du cookie, vous pouvez le faire
@Bean
public DefaultCookieSerializer defaultCookieSerializer(){
DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
defaultCookieSerializer.setCookieName("mySessionId");
return defaultCookieSerializer;
}
je trouve cela dans la source de la session de printemps
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);
}