# Spring 带有自定义 cookie 的会话-WebFlux

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

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

Index

# 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 我们将SameSitecookie 指令自定义为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