diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/RememberMeConfigurer.java b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/RememberMeConfigurer.java index 1cbc09f608..0710fc6785 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/RememberMeConfigurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/RememberMeConfigurer.java @@ -19,6 +19,7 @@ import java.util.UUID; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.RememberMeAuthenticationProvider; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.HttpSecurityBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -43,8 +44,7 @@ import org.springframework.security.web.authentication.ui.DefaultLoginPageGenera * The following Filters are populated * * * *

Shared Objects Created

@@ -69,7 +69,7 @@ import org.springframework.security.web.authentication.ui.DefaultLoginPageGenera *
  • {@link AuthenticationManager}
  • *
  • {@link UserDetailsService} if no {@link #userDetailsService(UserDetailsService)} * was specified.
  • - *
  • {@link DefaultLoginPageGeneratingFilter} - if present will be populated with + *
  • {@link DefaultLoginPageGeneratingFilter} - if present will be populated with * information from the configuration
  • * * @@ -77,8 +77,8 @@ import org.springframework.security.web.authentication.ui.DefaultLoginPageGenera * @author EddĂș MelĂ©ndez * @since 3.2 */ -public final class RememberMeConfigurer> extends - AbstractHttpConfigurer, H> { +public final class RememberMeConfigurer> + extends AbstractHttpConfigurer, H> { private AuthenticationSuccessHandler authenticationSuccessHandler; private String key; private RememberMeServices rememberMeServices; @@ -90,6 +90,7 @@ public final class RememberMeConfigurer> extend private UserDetailsService userDetailsService; private Integer tokenValiditySeconds; private Boolean useSecureCookie; + private Boolean alwaysRemember; /** * Creates a new instance @@ -183,10 +184,12 @@ public final class RememberMeConfigurer> extend } /** - * The name of cookie which store the token for remember me authentication. Defaults to 'remember-me'. + * The name of cookie which store the token for remember me authentication. Defaults + * to 'remember-me'. * - * @param rememberMeCookieName the name of cookie which store the token for remember me authentication - * @return the {@link RememberMeConfigurer} for further customization + * @param rememberMeCookieName the name of cookie which store the token for remember + * me authentication + * @return the {@link RememberMeConfigurer} for further customization * @since 4.0.1 */ public RememberMeConfigurer rememberMeCookieName(String rememberMeCookieName) { @@ -197,7 +200,8 @@ public final class RememberMeConfigurer> extend /** * The domain name within which the remember me cookie is visible. * - * @param rememberMeCookieDomain the domain name within which the remember me cookie is visible. + * @param rememberMeCookieDomain the domain name within which the remember me cookie + * is visible. * @return the {@link RememberMeConfigurer} for further customization * @since 4.1.0 */ @@ -244,8 +248,8 @@ public final class RememberMeConfigurer> extend RememberMeServices rememberMeServices = getRememberMeServices(http, key); http.setSharedObject(RememberMeServices.class, rememberMeServices); LogoutConfigurer logoutConfigurer = http.getConfigurer(LogoutConfigurer.class); - if (logoutConfigurer != null && logoutHandler != null) { - logoutConfigurer.addLogoutHandler(logoutHandler); + if (logoutConfigurer != null && this.logoutHandler != null) { + logoutConfigurer.addLogoutHandler(this.logoutHandler); } RememberMeAuthenticationProvider authenticationProvider = new RememberMeAuthenticationProvider( @@ -259,10 +263,11 @@ public final class RememberMeConfigurer> extend @Override public void configure(H http) throws Exception { RememberMeAuthenticationFilter rememberMeFilter = new RememberMeAuthenticationFilter( - http.getSharedObject(AuthenticationManager.class), rememberMeServices); - if (authenticationSuccessHandler != null) { + http.getSharedObject(AuthenticationManager.class), + this.rememberMeServices); + if (this.authenticationSuccessHandler != null) { rememberMeFilter - .setAuthenticationSuccessHandler(authenticationSuccessHandler); + .setAuthenticationSuccessHandler(this.authenticationSuccessHandler); } rememberMeFilter = postProcess(rememberMeFilter); http.addFilter(rememberMeFilter); @@ -273,7 +278,7 @@ public final class RememberMeConfigurer> extend * @return the HTTP parameter used to indicate to remember the user */ private String getRememberMeParameter() { - return rememberMeParameter; + return this.rememberMeParameter; } /** @@ -297,29 +302,34 @@ public final class RememberMeConfigurer> extend * @return the {@link RememberMeServices} to use * @throws Exception */ - private RememberMeServices getRememberMeServices(H http, String key) throws Exception { - if (rememberMeServices != null) { - if (rememberMeServices instanceof LogoutHandler && logoutHandler == null) { - this.logoutHandler = (LogoutHandler) rememberMeServices; + private RememberMeServices getRememberMeServices(H http, String key) + throws Exception { + if (this.rememberMeServices != null) { + if (this.rememberMeServices instanceof LogoutHandler + && this.logoutHandler == null) { + this.logoutHandler = (LogoutHandler) this.rememberMeServices; } - return rememberMeServices; + return this.rememberMeServices; } AbstractRememberMeServices tokenRememberMeServices = createRememberMeServices( http, key); - tokenRememberMeServices.setParameter(rememberMeParameter); - tokenRememberMeServices.setCookieName(rememberMeCookieName); - if (rememberMeCookieDomain != null) { - tokenRememberMeServices.setCookieDomain(rememberMeCookieDomain); + tokenRememberMeServices.setParameter(this.rememberMeParameter); + tokenRememberMeServices.setCookieName(this.rememberMeCookieName); + if (this.rememberMeCookieDomain != null) { + tokenRememberMeServices.setCookieDomain(this.rememberMeCookieDomain); } - if (tokenValiditySeconds != null) { - tokenRememberMeServices.setTokenValiditySeconds(tokenValiditySeconds); + if (this.tokenValiditySeconds != null) { + tokenRememberMeServices.setTokenValiditySeconds(this.tokenValiditySeconds); } - if (useSecureCookie != null) { - tokenRememberMeServices.setUseSecureCookie(useSecureCookie); + if (this.useSecureCookie != null) { + tokenRememberMeServices.setUseSecureCookie(this.useSecureCookie); + } + if (this.alwaysRemember != null) { + tokenRememberMeServices.setAlwaysRemember(this.alwaysRemember); } tokenRememberMeServices.afterPropertiesSet(); - logoutHandler = tokenRememberMeServices; - rememberMeServices = tokenRememberMeServices; + this.logoutHandler = tokenRememberMeServices; + this.rememberMeServices = tokenRememberMeServices; return tokenRememberMeServices; } @@ -335,7 +345,8 @@ public final class RememberMeConfigurer> extend */ private AbstractRememberMeServices createRememberMeServices(H http, String key) throws Exception { - return tokenRepository == null ? createTokenBasedRememberMeServices(http, key) + return this.tokenRepository == null + ? createTokenBasedRememberMeServices(http, key) : createPersistentRememberMeServices(http, key); } @@ -363,7 +374,7 @@ public final class RememberMeConfigurer> extend String key) { UserDetailsService userDetailsService = getUserDetailsService(http); return new PersistentTokenBasedRememberMeServices(key, userDetailsService, - tokenRepository); + this.tokenRepository); } /** @@ -375,16 +386,15 @@ public final class RememberMeConfigurer> extend * @return the {@link UserDetailsService} to use */ private UserDetailsService getUserDetailsService(H http) { - if (userDetailsService == null) { - userDetailsService = http.getSharedObject(UserDetailsService.class); + if (this.userDetailsService == null) { + this.userDetailsService = http.getSharedObject(UserDetailsService.class); } - if (userDetailsService == null) { - throw new IllegalStateException( - "userDetailsService cannot be null. Invoke " - + RememberMeConfigurer.class.getSimpleName() - + "#userDetailsService(UserDetailsService) or see its javadoc for alternative approaches."); + if (this.userDetailsService == null) { + throw new IllegalStateException("userDetailsService cannot be null. Invoke " + + RememberMeConfigurer.class.getSimpleName() + + "#userDetailsService(UserDetailsService) or see its javadoc for alternative approaches."); } - return userDetailsService; + return this.userDetailsService; } /** @@ -394,9 +404,9 @@ public final class RememberMeConfigurer> extend * @return the remember me key to use */ private String getKey() { - if (key == null) { - key = UUID.randomUUID().toString(); + if (this.key == null) { + this.key = UUID.randomUUID().toString(); } - return key; + return this.key; } } \ No newline at end of file