Tomcatでは、次のように実行できます。
<Context useHttpOnly="true" sessionCookiePath="/"sessionCookieDomain=".XXXX.com"/>
第2レベルドメインのCookieをSpring Bootと共有したいのですが、どうすればよいですか?
Spring Bootが埋め込むサーバーの設定は、アプリケーションプロパティとして使用できます( ここにリストされています セクション# EMBEDDED SERVER CONFIGURATION
および名前空間server.servlet.session.cookie.*
の下)。
上記のTomcat構成に相当するものは次のとおりです。
# properties in /src/resources/application.properties
server.servlet.session.cookie.domain=.XXXX.com
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.path=/
(これは、この記事の執筆時点のSpring 1.5.xに適用されます)
@ radrocket81の返信に追加するためのコード例を以下に示します。また、これは、SpringブートCookieのmax-ageおよびその他のプロパティを設定する方法です@EnableRedisHttpSessionによってRedisセッションを有効にした場合アプリケーションプロパティserver.sessionは適用されません。
@Bean
public <S extends ExpiringSession> SessionRepositoryFilter<? extends ExpiringSession> springSessionRepositoryFilter(SessionRepository<S> sessionRepository, ServletContext servletContext) {
SessionRepositoryFilter<S> sessionRepositoryFilter = new SessionRepositoryFilter<S>(sessionRepository);
sessionRepositoryFilter.setServletContext(servletContext);
CookieHttpSessionStrategy httpSessionStrategy = new CookieHttpSessionStrategy();
httpSessionStrategy.setCookieSerializer(this.cookieSerializer());
sessionRepositoryFilter.setHttpSessionStrategy(httpSessionStrategy);
return sessionRepositoryFilter;
}
private CookieSerializer cookieSerializer() {
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
serializer.setCookieName("CUSTOM_SESSION_KEY");
serializer.setDomainName("domain.com");
serializer.setCookiePath("/");
serializer.setCookieMaxAge(10); //Set the cookie max age in seconds, e.g. 10 seconds
return serializer;
}
私の解決策は、CookieSerializer Beanを定義し、私のセットアップに適合するドメインパターンを提供することでした。
このように: 春のセッション-カスタムCookie