Log a warning if custom DefaultCookieSerializer does not have rememberMeRequestAttribute set

Closes gh-2568
This commit is contained in:
Marcus Da Coregio
2023-10-26 14:51:47 -03:00
parent 1f9853914b
commit 3608d8aa54
3 changed files with 57 additions and 3 deletions

View File

@@ -108,9 +108,7 @@ public class SpringHttpSessionConfiguration implements InitializingBean, Applica
@Override
public void afterPropertiesSet() {
CookieSerializer cookieSerializer = (this.cookieSerializer != null) ? this.cookieSerializer
: createDefaultCookieSerializer();
this.defaultHttpSessionIdResolver.setCookieSerializer(cookieSerializer);
this.defaultHttpSessionIdResolver.setCookieSerializer(getCookieSerializer());
}
@Bean
@@ -154,6 +152,21 @@ public class SpringHttpSessionConfiguration implements InitializingBean, Applica
this.httpSessionListeners = listeners;
}
private CookieSerializer getCookieSerializer() {
if (this.cookieSerializer != null) {
if (this.cookieSerializer instanceof DefaultCookieSerializer defaultCookieSerializer
&& this.usesSpringSessionRememberMeServices
&& defaultCookieSerializer.getRememberMeRequestAttribute() == null) {
this.logger.warn("Spring Session Remember Me support is enabled "
+ "and the DefaultCookieSerializer is provided explicitly. "
+ "The DefaultCookieSerializer must be configured with "
+ "setRememberMeRequestAttribute(String) in order to support Remember Me.");
}
return this.cookieSerializer;
}
return createDefaultCookieSerializer();
}
private CookieSerializer createDefaultCookieSerializer() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
if (this.servletContext != null) {

View File

@@ -434,4 +434,14 @@ public class DefaultCookieSerializer implements CookieSerializer {
return this.cookiePath;
}
/**
* Gets the name of the request attribute that is checked to see if the cookie should
* be written with {@link Integer#MAX_VALUE}.
* @return the remember me request attribute
* @since 3.2
*/
public String getRememberMeRequestAttribute() {
return this.rememberMeRequestAttribute;
}
}