2014-09-18 18 views
11

Ich mag meine Servletkontext konfigurieren, wie Sessing einen benutzerdefinierten JSESSIONID Schlüssel (siehe Changing cookie JSESSIONID name)Frühling Boot configure benutzerdefinierte jsessionid für Embedded Server

Ich glaube, ich die SpringBootServletInitializer verwenden kann, wenn eine WAR-Datei ausgeführt wird, die Manipulation die servletContext in onStartup(). Wenn ich jedoch auf einem eingebetteten Anwendungsserver unter Verwendung von new SpringApplicationBuilder().run() ausführe, weiß ich nicht, wo der Servletkontext am besten manipuliert werden kann.

+1

ich bin ziemlich misstrauisch Ihre Motive. Wenn Sie den Cookie-Namen ändern, können Sie beispielsweise keine gemeinsamen Lastenausgleichsalgorithmen nutzen. Ich kann nicht wirklich verstehen, warum es notwendig ist. –

Antwort

16

Deklarieren Sie eine ServletContextInitializer Bohne in der Konfiguration Ihrer Anwendung:

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

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

} 

Alternativ selbst Ihre Anwendungsklasse ServletContextInitializer implementieren können:

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

} 
+0

Großartige Arbeit Herr Wilkinson hat dies schon seit einiger Zeit gesucht! Mach weiter so. –

1

mit Frühlingssession, wenn Sie Cookie-Namen ändern möchten, können Sie dies tun

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

finde ich im Frühjahr Sitzung Quelle

Feder-session-1.2.1.RELEASE-Quellen. Glas! /org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java

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