在 Grails 3.0 中更改会话 cookie 名称

Change session cookie name in Grails 3.0

在 Grails 2.x 中,您可以使用

在 web.xml 中更改会话 cookie 的名称
<session-config>
    <cookie-config>
        <name>JSESSIONID_XYZ</name>
    </cookie-config>
</session-config>

在 Grails 3.0 中默认没有 web.xml(但可以手动创建)。还有其他方法可以更改会话 cookie 的名称吗?

更新:我尝试创建一个 web.xml 但没有成功

它在部署为 war 时有效,但不适用于 运行-app。将此添加到 src/main/webapp/WEB-INF/web.xml:

<?xml version='1.0' encoding='UTF-8'?>
<web-app 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'>

   <session-config>
      <cookie-config>
         <name>JSESSIONID_XYZ</name>
      </cookie-config>
   </session-config>

</web-app>

并将 war 部署到 Tomcat 或另一个容器,它将使用来自 web.xml 的配置设置以及编程 servlet/filter/etc。注册。

ServletContextInitializer可以用来注册一个bean,里面可以配置Cookie名称

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

我推荐这个解决方案是因为它在开发过程中也可以与 运行-app 一起使用,这正是我所需要的。