Spring Session - WebFlux 與自訂 Cookie

本指南說明如何設定 Spring Session 以在基於 WebFlux 的應用程式中使用自訂 Cookie。本指南假設您已使用您選擇的資料儲存區在專案中設定 Spring Session。例如,HttpSession 與 Redis

您可以在 WebFlux 自訂 Cookie 範例應用程式中找到完整的指南。

設定 Spring Session 後,您可以透過公開 WebSessionIdResolver 作為 Spring bean 來客製化 Session 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;
	}
1 我們將 Cookie 的名稱客製化為 JSESSIONID
2 我們將 Cookie 的路徑客製化為 /(而不是預設的 Context Root)。
3 我們將 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

現在點擊設定屬性按鈕。您現在應該會在表格中看到顯示的值。

如果您查看應用程式的 Cookie,您可以看到 Cookie 已儲存為自訂名稱 JSESSIONID