最新の安定バージョンについては、Spring Session 3.4.3 を使用してください! |
Spring Session - カスタム Cookie を使用した WebFlux
このガイドでは、WebFlux ベースのアプリケーションでカスタム Cookie を使用するように Spring Session を構成する方法について説明します。このガイドでは、選択したデータストアを使用してプロジェクトに Spring Session がすでに設定されていることを前提としています。例: Redis を使用した HttpSession。
完成したガイドは WebFlux カスタム Cookie サンプルアプリケーションにあります。 |
Spring Boot の設定
Spring Session を設定したら、WebSessionIdResolver
を Spring Bean として公開することにより、セッション Cookie の書き込み方法をカスタマイズできます。Spring Session はデフォルトで CookieWebSessionIdResolver
を使用します。WebSessionIdResolver
を Spring として公開する Bean は、@EnableRedisHttpSession
のような構成を使用する場合、既存の構成を拡張します。次の例は、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
サンプルを機能させるには、ローカルホストで Redis 2.8+ をインストールします (英語) を実行し、デフォルトのポート (6379) で実行する必要があります。または、Redis サーバーを指すように RedisConnectionFactory を更新することもできます。もう 1 つのオプションは、Docker (英語) を使用してローカルホストで Redis を実行することです。詳細な手順については、Docker Redis リポジトリ (英語) を参照してください。 |
これで、localhost:8080/ でアプリケーションにアクセスできるようになります。