このガイドでは、WebFlux ベースのアプリケーションでカスタム Cookie を使用するように Spring Session を構成する方法について説明します。このガイドでは、選択したデータストアを使用してプロジェクトに Spring Session がすでに設定されていることを前提としています。例: Redis を使用した HttpSession。
| 完成したガイドは WebFlux カスタム Cookie サンプルアプリケーションにあります。 |
1. 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 にカスタマイズします。 |
2. webflux-custom-cookie サンプルアプリケーション
このセクションでは、webflux-custom-cookie サンプルアプリケーションの操作方法について説明します。
2.1. webflux-custom-cookie サンプルアプリケーションの実行
サンプルを実行するには、ソースコードを取得し、次のコマンドを呼び出します。
$ ./gradlew :spring-session-sample-boot-webflux-custom-cookie:bootRun
サンプルを機能させるには、ローカルホストで Redis 2.8+ をインストールします (英語) を実行し、デフォルトのポート (6379) で実行する必要があります。または、Redis サーバーを指すように RedisConnectionFactory を更新することもできます。もう 1 つのオプションは、Docker (英語) を使用してローカルホストで Redis を実行することです。詳細な手順については、Docker Redis リポジトリ (英語) を参照してください。 |
これで、http://localhost:8080/ でアプリケーションにアクセスできるようになります。