Spring Session - WebFlux with Custom Cookie

本指南介绍了如何在基于 WebFlux 的应用程序中配置 Spring Session 以使用自定义 cookie。本指南假设您已使用所选数据存储在项目中设置 Spring Session。例如, HttpSession with Redis

您可以在WebFlux Custom Cookie sample application中找到已完成指南。

设置好 Spring Session 后,你可以公开一个 WebSessionIdResolver 作为 Spring Bean 自定义会话 Cookie 的写入方式。Spring Session 默认使用 CookieWebSessionIdResolver。将 WebSessionIdResolver 作为 Spring Bean 公开可以在使用 @EnableRedisHttpSession 等配置时增强现有配置。以下示例展示了如何自定义 Spring Session 的 cookie:

Unresolved include directive in modules/ROOT/pages/guides/boot-webflux-custom-cookie.adoc - include::example$spring-session-samples/spring-session-sample-boot-webflux-custom-cookie/src/main/java/sample/CookieConfig.java[]
1 我们自定义 cookie 名称,使其为 JSESSIONID
2 我们自定义 cookie 路径,使其为 /(而不是默认的上下文根)。
3 我们自定义 SameSite cookie 指令,使其为 Strict

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

您可以获取 源代码 并调用以下命令运行示例:

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

要让示例发挥作用,你必须在 localhost 上 install Redis 2.8+ 并使用默认端口 (6379) 运行它。或者,你可以更新 RedisConnectionFactory 以指向 Redis 服务器。另一个选项是使用 Docker 在 localhost 上运行 Redis。有关详细说明,请参见 Docker Redis repository

您现在应该能够访问 [role="bare"][role="bare"]http://localhost:8080/ 中的应用程序。

现在你可以使用此应用程序。填写以下信息的表单:

  • Attribute Name: username

  • Attribute Value: rob

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

如果你查看该应用程序的 cookie,将能看到 cookie 已保存到自定义名称 JSESSIONID