我尝试了不同的方法来设置自定义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名称吗?
答案 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
它对我来说很好。