Spring Session - WebFlux 使用自定義 Cookie
本指南介紹瞭如何在基於 WebFlux 的應用程式中配置 Spring Session 以使用自定義 Cookie。本指南假設您已經在專案中使用您選擇的資料儲存設定了 Spring Session。例如,HttpSession 與 Redis。
您可以在webflux-custom-cookie 示例應用中找到完整的指南。 |
Spring Boot 配置
設定 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
示例應用
本節介紹如何使用 webflux-custom-cookie
示例應用。
執行 webflux-custom-cookie
示例應用
您可以透過獲取原始碼並呼叫以下命令來執行示例
$ ./gradlew :spring-session-sample-boot-webflux-custom-cookie:bootRun
為了使示例正常工作,您必須在 localhost 上安裝 Redis 2.8+ 並使用預設埠 (6379) 執行它。或者,您可以更新 RedisConnectionFactory 以指向 Redis 伺服器。另一種選擇是使用 Docker 在 localhost 上執行 Redis。請參閱 Docker Redis repository 以獲取詳細說明。 |
您現在應該可以透過 localhost:8080/ 訪問該應用程式