首页 > 解决方案 > 会话 cookie 自定义路径

问题描述

我有一个 Spring Boot 应用程序,想将其部署到 Wildfly12。我想要实现的是为 JSESSIONID cookie 设置自定义路径。但毕竟,我的努力没有任何结果。

我试图在我的 application.properties 文件中使用这个属性:

server.servlet.session.cookie.path=/

当我使用嵌入式 tomcat 运行应用程序时,一切正常;但是当我将我的应用程序部署到 wildfly 时,无论该属性的值如何,它总是将 cookie 路径设置为应用程序的“上下文路径”。

我也尝试过使用这个属性:

server.servlet.context-path=/

但到目前为止还没有成功!

在standalone.xml 文件中也有这个标签:

<session-cookie http-only="true" secure="true"/>

但它似乎与 cookie 路径无关,因为它没有任何属性。

标签: springspring-bootwildfly

解决方案


您正在做的配置是针对 spring boot 应用程序的嵌入式服务器。

应用程序属性中存在嵌入式服务器设置(可以在此处检查# EMBEDDED SERVER CONFIGURATION部分和命名空间 server.servlet.session.cookie.*)。

要修改外部服务器上的 cookie 相关配置,您必须创建CookieSerializer可用于自定义 cookie 配置的 bean。例如

        @Bean
        public CookieSerializer cookieSerializer() {
                DefaultCookieSerializer serializer = new DefaultCookieSerializer();
                serializer.setCookieName("JSESSIONID"); 
                serializer.setCookiePath("/"); 
                serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$"); 
                return serializer;
        }

您可以参考弹簧指南以获取更多信息。


推荐阅读