@@ -268,7 +268,7 @@ public class ServerHttpSecurity {
268268
269269 private ReactiveAuthenticationManager authenticationManager ;
270270
271- private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository () ;
271+ private ServerSecurityContextRepository securityContextRepository ;
272272
273273 private ServerAuthenticationEntryPoint authenticationEntryPoint ;
274274
@@ -346,7 +346,7 @@ private ServerWebExchangeMatcher getSecurityMatcher() {
346346 }
347347
348348 /**
349- * The strategy used with {@code ReactorContextWebFilter}. It does not impact how the {@code SecurityContext} is
349+ * The strategy used with {@code ReactorContextWebFilter}. It does impact how the {@code SecurityContext} is
350350 * saved which is configured on a per {@link AuthenticationWebFilter} basis.
351351 * @param securityContextRepository the repository to use
352352 * @return the {@link ServerHttpSecurity} to continue configuring
@@ -971,7 +971,7 @@ public class OAuth2LoginSpec {
971971
972972 private ReactiveAuthenticationManager authenticationManager ;
973973
974- private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository () ;
974+ private ServerSecurityContextRepository securityContextRepository ;
975975
976976 private ServerAuthenticationConverter authenticationConverter ;
977977
@@ -2254,9 +2254,7 @@ public SecurityWebFilterChain build() {
22542254 this .headers .configure (this );
22552255 }
22562256 WebFilter securityContextRepositoryWebFilter = securityContextRepositoryWebFilter ();
2257- if (securityContextRepositoryWebFilter != null ) {
2258- this .webFilters .add (securityContextRepositoryWebFilter );
2259- }
2257+ this .webFilters .add (securityContextRepositoryWebFilter );
22602258 if (this .httpsRedirectSpec != null ) {
22612259 this .httpsRedirectSpec .configure (this );
22622260 }
@@ -2273,18 +2271,42 @@ public SecurityWebFilterChain build() {
22732271 if (this .httpBasic .authenticationManager == null ) {
22742272 this .httpBasic .authenticationManager (this .authenticationManager );
22752273 }
2274+ if (this .httpBasic .securityContextRepository != null ) {
2275+ this .httpBasic .securityContextRepository (this .httpBasic .securityContextRepository );
2276+ }
2277+ else if (this .securityContextRepository != null ) {
2278+ this .httpBasic .securityContextRepository (this .securityContextRepository );
2279+ }
2280+ else {
2281+ this .httpBasic .securityContextRepository (NoOpServerSecurityContextRepository .getInstance ());
2282+ }
22762283 this .httpBasic .configure (this );
22772284 }
22782285 if (this .formLogin != null ) {
22792286 if (this .formLogin .authenticationManager == null ) {
22802287 this .formLogin .authenticationManager (this .authenticationManager );
22812288 }
2282- if (this .securityContextRepository != null ) {
2289+ if (this .formLogin .securityContextRepository != null ) {
2290+ this .formLogin .securityContextRepository (this .formLogin .securityContextRepository );
2291+ }
2292+ else if (this .securityContextRepository != null ) {
22832293 this .formLogin .securityContextRepository (this .securityContextRepository );
22842294 }
2295+ else {
2296+ this .formLogin .securityContextRepository (new WebSessionServerSecurityContextRepository ());
2297+ }
22852298 this .formLogin .configure (this );
22862299 }
22872300 if (this .oauth2Login != null ) {
2301+ if (this .oauth2Login .securityContextRepository != null ) {
2302+ this .oauth2Login .securityContextRepository (this .oauth2Login .securityContextRepository );
2303+ }
2304+ else if (this .securityContextRepository != null ) {
2305+ this .oauth2Login .securityContextRepository (this .securityContextRepository );
2306+ }
2307+ else {
2308+ this .oauth2Login .securityContextRepository (new WebSessionServerSecurityContextRepository ());
2309+ }
22882310 this .oauth2Login .configure (this );
22892311 }
22902312 if (this .resourceServer != null ) {
@@ -2379,10 +2401,8 @@ public static ServerHttpSecurity http() {
23792401 }
23802402
23812403 private WebFilter securityContextRepositoryWebFilter () {
2382- ServerSecurityContextRepository repository = this .securityContextRepository ;
2383- if (repository == null ) {
2384- return null ;
2385- }
2404+ ServerSecurityContextRepository repository = this .securityContextRepository == null ?
2405+ new WebSessionServerSecurityContextRepository () : this .securityContextRepository ;
23862406 WebFilter result = new ReactorContextWebFilter (repository );
23872407 return new OrderedWebFilter (result , SecurityWebFiltersOrder .REACTOR_CONTEXT .getOrder ());
23882408 }
@@ -2774,7 +2794,7 @@ private RequestCacheSpec() {}
27742794 public class HttpBasicSpec {
27752795 private ReactiveAuthenticationManager authenticationManager ;
27762796
2777- private ServerSecurityContextRepository securityContextRepository = NoOpServerSecurityContextRepository . getInstance () ;
2797+ private ServerSecurityContextRepository securityContextRepository ;
27782798
27792799 private ServerAuthenticationEntryPoint entryPoint = new HttpBasicServerAuthenticationEntryPoint ();
27802800
@@ -2846,9 +2866,7 @@ protected void configure(ServerHttpSecurity http) {
28462866 this .authenticationManager );
28472867 authenticationFilter .setAuthenticationFailureHandler (new ServerAuthenticationEntryPointFailureHandler (this .entryPoint ));
28482868 authenticationFilter .setAuthenticationConverter (new ServerHttpBasicAuthenticationConverter ());
2849- if (this .securityContextRepository != null ) {
2850- authenticationFilter .setSecurityContextRepository (this .securityContextRepository );
2851- }
2869+ authenticationFilter .setSecurityContextRepository (this .securityContextRepository );
28522870 http .addFilterAt (authenticationFilter , SecurityWebFiltersOrder .HTTP_BASIC );
28532871 }
28542872
@@ -2869,7 +2887,7 @@ public class FormLoginSpec {
28692887
28702888 private ReactiveAuthenticationManager authenticationManager ;
28712889
2872- private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository () ;
2890+ private ServerSecurityContextRepository securityContextRepository ;
28732891
28742892 private ServerAuthenticationEntryPoint authenticationEntryPoint ;
28752893
@@ -2966,7 +2984,7 @@ public FormLoginSpec authenticationFailureHandler(ServerAuthenticationFailureHan
29662984
29672985 /**
29682986 * The {@link ServerSecurityContextRepository} used to save the {@code Authentication}. Defaults to
2969- * {@link NoOpServerSecurityContextRepository }. For the {@code SecurityContext} to be loaded on subsequent
2987+ * {@link WebSessionServerSecurityContextRepository }. For the {@code SecurityContext} to be loaded on subsequent
29702988 * requests the {@link ReactorContextWebFilter} must be configured to be able to load the value (they are not
29712989 * implicitly linked).
29722990 *
0 commit comments