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

本指南描述了如何配置 Spring Session 以在基于 WebFlux 的应用程序中使用自定义 Cookie。该指南假定你已经使用所选的数据存储在项目中设置了 Spring Session 。例如，[HttpSession with Redis ](./boot-redis.html)。

|   |你可以在[WebFlux 自定义 Cookie 示例应用程序](#webflux-custom-cookie-sample)中找到完整的指南。|
|---|------------------------------------------------------------------------------------------------------------------|

[Index](../index.html)

##  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`示例应用程序

你可以通过获取[源代码](https://github.com/spring-projects/spring-session/archive/main.zip)并调用以下命令来运行示例：

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

|   |要使示例工作，你必须在 localhost 上[安装 Redis2.8+](https://redis.io/download)并使用默认端口（6379）运行它。<br/>或者，你可以更新`RedisConnectionFactory`以指向 Redis 服务器。<br/>另一个选项是使用[Docker](https://www.docker.com/)在 localhost 上运行 Redis。详细说明见[Docker Redis 存储库](https://hub.docker.com/_/redis/)。|
|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

现在你应该可以在[http://localhost:8080/](http://localhost:8080/)上访问应用程序了。

### 探索`webflux-custom-cookie`示例应用程序

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

* **属性名称：** *用户 Name *

* **属性值：** *罗布*

现在点击**设置属性**按钮。现在你应该可以看到表中显示的值了。

如果查看应用程序的 cookie，可以看到 cookie 已保存到自定义名称`JSESSIONID`。