# Spring 带有自定义 cookie 的会话-WebFlux
本指南描述了如何配置 Spring Session 以在基于 WebFlux 的应用程序中使用自定义 Cookie。该指南假定你已经使用所选的数据存储在项目中设置了 Spring Session 。例如,HttpSession with Redis 。
你可以在WebFlux 自定义 Cookie 示例应用程序中找到完整的指南。 |
---|
# Spring 引导配置
一旦设置了 Spring Session ,就可以通过将WebSessionIdResolver
公开为 Spring Bean 来自定义会话 cookie 的编写方式。 Spring 默认情况下,会话使用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;
}
1 | 我们将 cookie 的名称自定义为JSESSIONID 。 |
---|---|
2 | 我们将 cookie 的路径自定义为/ (而不是上下文根的默认值)。 |
3 | 我们将SameSite cookie 指令自定义为Strict 。 |
# webflux-custom-cookie
示例应用程序
本节介绍如何使用webflux-custom-cookie
示例应用程序。
# 运行webflux-custom-cookie
示例应用程序
你可以通过获取源代码 (opens new window)并调用以下命令来运行示例:
$ ./gradlew :spring-session-sample-boot-webflux-custom-cookie:bootRun
要使示例工作,你必须在 localhost 上安装 Redis2.8+ (opens new window)并使用默认端口(6379)运行它。 或者,你可以更新 RedisConnectionFactory 以指向 Redis 服务器。另一个选项是使用Docker (opens new window)在 localhost 上运行 Redis。详细说明见Docker Redis 存储库 (opens new window)。 |
---|
现在你应该可以在http://localhost:8080/ (opens new window)上访问应用程序了。
# 探索webflux-custom-cookie
示例应用程序
现在你可以使用该应用程序了。请在表格中填写以下信息:
属性名称: *用户 Name *
属性值: 罗布
现在点击设置属性按钮。现在你应该可以看到表中显示的值了。
如果查看应用程序的 cookie,可以看到 cookie 已保存到自定义名称JSESSIONID
。