2014-09-18 9 views
11

मैं जैसे मेरी सर्वलेट संदर्भ कॉन्फ़िगर करना चाहते हैं, के लिए बूट कॉन्फ़िगर कस्टम jsessionid एक कस्टम jsessionid कुंजी (देखें Changing cookie JSESSIONID name)स्प्रिंग एम्बेडेड सर्वर

मेरा मानना ​​है कि जब एक युद्ध फ़ाइल चल रहा SpringBootServletInitializer उपयोग कर सकते हैं, servletContext जोड़ तोड़ sessing onStartup() में। हालांकि, जब मैं एक एम्बेडेड अनुप्रयोग सर्वर पर चलाता हूं, new SpringApplicationBuilder().run() का उपयोग करके, मुझे सर्वलेट संदर्भ में हेरफेर करने के लिए सबसे अच्छी जगह नहीं पता है।

+1

मैं अपनी मंशा से काफी संदिग्ध हूँ। यदि आप कुकी नाम बदलते हैं तो आप उदाहरण के लिए सामान्य लोड-बैलेंसिंग एल्गोरिदम का लाभ नहीं ले पाएंगे। मैं वास्तव में समझ नहीं सकता कि यह क्यों जरूरी है। –

उत्तर

16

आपके आवेदन के विन्यास में एक 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"); 
    } 

} 
+0

ग्रेट जॉब श्री विल्किनसन कुछ समय से यह खोज रहे हैं! अच्छा काम करते रहें। –

19

स्प्रिंग बूट में 1.3 आप बस एक विन्यास संपत्ति सेट कर सकते हैं ;

server.session.cookie.name = MYSESSIONID 

कॉन्फ़िगरेशन क्लास लिखना बहुत आसान है।

अधिक सत्र संबंधित गुणों के लिए https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html देखें।

1

वसंत सत्र के साथ, आप कुकी नाम बदलना चाहते हैं, तो आप इस

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

कर सकते हैं मैं वसंत सत्र स्रोत

वसंत-सत्र-1.2.1.RELEASE-स्रोतों में इस पाते हैं। जार! /org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java

@Autowired(required = false) 
public void setCookieSerializer(CookieSerializer cookieSerializer) { 
    this.defaultHttpSessionStrategy.setCookieSerializer(cookieSerializer); 
} 
संबंधित मुद्दे