2017-06-20 69 views
0

我嘗試了不同的方式來設置一個自定義的cookie名稱。但是沒有人在我的配置中工作。如何在獨立tomcat的Spring Boot中設置cookie名稱?

我有一個運行在獨立tomcat中的spring啓動應用程序。

我試圖在從SpringBootServletInitializer得到的SpringBootApplication類設置cookie名稱:

@Value("${session.cookie.name}") 
private String sessionCookieName; 


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

我也試過bean定義DefaultCookieSerializer

@Value("${session.cookie.name}") 
private String sessionCookieName; 

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

但沒有什麼工作至今,我總是得到默認的JSESSONID,而不是我配置的session.cookie.name

是否有其他方式,以習慣mize cookie的名字?

+0

添加['TomcatContainerCustomizer'](http://docs.spring.io/spring-boot/docs/current /api/org/springframework/boot/context/embedded/tomcat/TomcatContextCustomizer.html)作爲一個bean,並在'Context'(傳入)上使用'setSessionCookieName'方法來更改cookie的名稱。 –

+0

請添加您的完整'應用程序'類而不是一個片段。 –

+0

請將您的解決方案作爲問題的答案發布,而不是作爲對問題的更新。這將有助於未來的訪問者理解並減少混淆。謝謝。 – Bugs

回答

0

我按照建議嘗試了TomcatContextCustomizer。但是我認爲這不起作用,因爲它只是針對嵌入式tomcat而將應用程序部署爲WAR-File。

我通過添加一個web.xml解決了這個問題。在src/main/webapp/WEB-INF文件夾中。我對這個解決方案並不滿意,因爲我不想在我的spring引導應用程序中使用web.xml。但是,它的工作原理...

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"   
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     metadata-complete="true"> 
    <session-config> 
     <session-timeout>30</session-timeout> 
     <cookie-config> 
      <name>CUSTOM_SESSION_ID</name> 
      <http-only>true</http-only> 
     </cookie-config> 
     <tracking-mode>COOKIE</tracking-mode> 
    </session-config> 
</web-app> 

如果有沒有更好的辦法讓我知道

相關問題