如何在独立的tomcat上设置Spring Boot中的cookie名称?

时间:2017-06-20 15:39:39

标签: spring tomcat cookies spring-boot

我尝试了不同的方法来设置自定义Cookie名称。但是没有一个在我的配置中工作。

我有一个Spring启动应用程序,它运行在一个独立的tomcat中。

我尝试在SpringBootApplication类中设置cookie名称,该名称派生自SpringBootServletInitializer:

@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

还有其他方法可以自定义Cookie名称吗?

2 个答案:

答案 0 :(得分:0)

我按照建议尝试了TomcatContextCustomizer。但是,当您将应用程序部署为WAR-File时,我认为它不起作用,因为它仅适用于嵌入式tomcat。

我通过添加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>

如果有更好的解决方案,请告诉我

答案 1 :(得分:0)

在 spring boot 应用程序中。您可以通过在 JESSIONID 文件中设置自定义名称来重命名 application.properties,如下所示:

server.servlet.session.cookie.name=Your_custome_name

它对我来说很好。