Spring Session - 帶有自定義 Cookie 的 WebFlux

本指南介紹瞭如何在基於 WebFlux 的應用程式中配置 Spring Session 以使用自定義 Cookie。本指南假設您已使用所選資料儲存在專案中設定了 Spring Session。例如,使用 Redis 的 HttpSession

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

設定 Spring Session 後,您可以透過將 WebSessionIdResolver 作為 Spring bean 公開來定製會話 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 的路徑定製為 /(而不是預設的上下文根)。
3 我們將 SameSite Cookie 指令定製為 Strict

本節介紹瞭如何使用 webflux-custom-cookie 示例應用程式。

您可以透過獲取原始碼並呼叫以下命令來執行示例:

$ ./gradlew :spring-session-sample-boot-webflux-custom-cookie:bootRun
要使示例正常工作,您必須在本地主機上安裝 Redis 2.8+ 並以預設埠(6379)執行它。或者,您可以更新 RedisConnectionFactory 以指向 Redis 伺服器。另一種選擇是使用 Docker 在本地主機上執行 Redis。有關詳細說明,請參閱Docker Redis 儲存庫

您現在應該能夠透過 localhost:8080/ 訪問該應用程式

現在您可以使用該應用程式。填寫以下資訊的表單

  • 屬性名稱: username

  • 屬性值: rob

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

如果您檢視應用程式的 Cookie,您可以看到 Cookie 以自定義名稱 JSESSIONID 儲存。

© . This site is unofficial and not affiliated with VMware.