如何在独立Tomcat中运行的Spring引导应用程序中设置cookie名称?

如何在独立Tomcat中运行的Spring引导应用程序中设置cookie名称?,spring,tomcat,cookies,spring-boot,Spring,Tomcat,Cookies,Spring Boot,我尝试了不同的方法来设置自定义的cookie名称。但在我的配置中没有一个工作 我有一个Spring引导应用程序,它在一个独立的Tomcat中运行 我试图在springbootsapplication类中设置cookie名称,该类派生自SpringBootServletInitializer: @Value("${session.cookie.name}") private String sessionCookieName; @Override public void onStartup(Ser

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

我有一个Spring引导应用程序,它在一个独立的Tomcat中运行

我试图在
springbootsapplication
类中设置cookie名称,该类派生自
SpringBootServletInitializer

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

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    servletContext.getSessionCookieConfig().setName(sessionCookieName);
    super.onStartup(servletContext);
}
@Value("${session.cookie.name}")
private String sessionCookieName;

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

我还尝试将bean定义为
DefaultCookieSerializer

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

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    servletContext.getSessionCookieConfig().setName(sessionCookieName);
    super.onStartup(servletContext);
}
@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名称吗?

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

我通过添加web.xml解决了这个问题。在src/main/webapp/WEB-INF文件夹中。我对这个解决方案不是很满意,因为我不想在我的spring boot应用程序中使用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>

30
自定义会话ID
真的
曲奇

如果有更好的解决方案,请在spring boot应用程序中告诉我。通过在
application.properties
文件中设置自定义名称,可以重命名
JESSIONID
,如下所示:

server.servlet.session.cookie.name=Your_custome_name

它对我来说很好。

添加一个bean,并使用
上下文
(传入)上的
setSessionCookieName
方法更改cookie的名称。请添加完整的
应用程序
类而不是片段。请将您的解决方案作为问题的答案发布,而不是作为问题的更新。这将有助于未来的游客理解,并减少混乱。非常感谢。