跳到主要内容
版本:4.1.1

Spring Session - 使用自定义 Cookie 的 WebFlux

Doubao 中英对照 Spring Session - WebFlux with Custom Cookie

本指南描述如何配置 Spring Session 在基于 WebFlux 的应用程序中使用自定义 cookie。本指南假设你已经使用所选的数据存储在项目中设置了 Spring Session。例如,将 HttpSession 与 Redis 结合使用。

备注

你可以在 WebFlux 自定义 Cookie 示例应用程序 中找到完整的指南。

设置好 Spring Session 后,你可以通过将 WebSessionIdResolver 暴露为 Spring bean 来自定义会话 cookie 的写入方式。Spring Session 默认使用 CookieWebSessionIdResolver。当你使用 @EnableRedisHttpSession 等配置时,将 WebSessionIdResolver 暴露为 Spring bean 会增强现有配置。以下示例展示了如何自定义 Spring Session 的 cookie:

@Bean
public WebSessionIdResolver webSessionIdResolver() {
CookieWebSessionIdResolver resolver = new CookieWebSessionIdResolver();
resolver.setCookieName("JSESSIONID"); 1
resolver.addCookieInitializer((builder) -> builder.path("/")); 2
resolver.addCookieInitializer((builder) -> builder.sameSite("Strict")); 3
return resolver;
}
  • 我们将 cookie 的名称自定义为 JSESSIONID。

  • 我们将 cookie 的路径自定义为 /(而不是上下文根的默认值)。

  • 我们将 SameSite cookie 指令自定义为 Strict。

本节描述如何使用 webflux-custom-cookie 示例应用程序。

你可以通过获取源代码并运行以下命令来启动示例:

$ ./gradlew :spring-session-sample-boot-webflux-custom-cookie:bootRun
备注

要使示例正常工作,你必须在 localhost 上安装 Redis 2.8+ 并以默认端口(6379)运行。或者,你可以更新 RedisConnectionFactory 以指向 Redis 服务器。另一个选择是使用 Docker 在 localhost 上运行 Redis。详细说明请参阅 Docker Redis 仓库。

现在你应该可以通过 localhost:8080/ 访问该应用程序了。

现在你可以使用该应用程序了。在表单中填写以下信息:

  • 属性名称: username
  • 属性值: rob

现在点击 Set Attribute 按钮。你现在应该能在表格中看到显示的值。

如果你查看该应用程序的 cookie,你会发现 cookie 被保存为自定义名称 JSESSIONID。