@@ -202,6 +202,7 @@ class HttpConfigurationBuilder {
202
202
this .sessionPolicy = !StringUtils .hasText (createSession ) ? SessionCreationPolicy .IF_REQUIRED
203
203
: createPolicy (createSession );
204
204
createCsrfFilter ();
205
+ createSecurityContextRepository ();
205
206
createSecurityContextPersistenceFilter ();
206
207
createSessionManagementFilters ();
207
208
createWebAsyncManagerFilter ();
@@ -280,17 +281,29 @@ static String createPath(String path, boolean lowerCase) {
280
281
281
282
private void createSecurityContextPersistenceFilter () {
282
283
BeanDefinitionBuilder scpf = BeanDefinitionBuilder .rootBeanDefinition (SecurityContextPersistenceFilter .class );
284
+ String disableUrlRewriting = this .httpElt .getAttribute (ATT_DISABLE_URL_REWRITING );
285
+ switch (this .sessionPolicy ) {
286
+ case ALWAYS :
287
+ scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .TRUE );
288
+ break ;
289
+ case NEVER :
290
+ scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .FALSE );
291
+ break ;
292
+ default :
293
+ scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .FALSE );
294
+ }
295
+ scpf .addConstructorArgValue (this .contextRepoRef );
296
+
297
+ this .securityContextPersistenceFilter = scpf .getBeanDefinition ();
298
+ }
299
+
300
+ private void createSecurityContextRepository () {
283
301
String repoRef = this .httpElt .getAttribute (ATT_SECURITY_CONTEXT_REPOSITORY );
284
302
String disableUrlRewriting = this .httpElt .getAttribute (ATT_DISABLE_URL_REWRITING );
285
303
if (!StringUtils .hasText (disableUrlRewriting )) {
286
304
disableUrlRewriting = "true" ;
287
305
}
288
- if (StringUtils .hasText (repoRef )) {
289
- if (this .sessionPolicy == SessionCreationPolicy .ALWAYS ) {
290
- scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .TRUE );
291
- }
292
- }
293
- else {
306
+ if (!StringUtils .hasText (repoRef )) {
294
307
BeanDefinitionBuilder contextRepo ;
295
308
if (this .sessionPolicy == SessionCreationPolicy .STATELESS ) {
296
309
contextRepo = BeanDefinitionBuilder .rootBeanDefinition (NullSecurityContextRepository .class );
@@ -300,15 +313,12 @@ private void createSecurityContextPersistenceFilter() {
300
313
switch (this .sessionPolicy ) {
301
314
case ALWAYS :
302
315
contextRepo .addPropertyValue ("allowSessionCreation" , Boolean .TRUE );
303
- scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .TRUE );
304
316
break ;
305
317
case NEVER :
306
318
contextRepo .addPropertyValue ("allowSessionCreation" , Boolean .FALSE );
307
- scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .FALSE );
308
319
break ;
309
320
default :
310
321
contextRepo .addPropertyValue ("allowSessionCreation" , Boolean .TRUE );
311
- scpf .addPropertyValue ("forceEagerSessionCreation" , Boolean .FALSE );
312
322
}
313
323
if ("true" .equals (disableUrlRewriting )) {
314
324
contextRepo .addPropertyValue ("disableUrlRewriting" , Boolean .TRUE );
@@ -320,9 +330,6 @@ private void createSecurityContextPersistenceFilter() {
320
330
}
321
331
322
332
this .contextRepoRef = new RuntimeBeanReference (repoRef );
323
- scpf .addConstructorArgValue (this .contextRepoRef );
324
-
325
- this .securityContextPersistenceFilter = scpf .getBeanDefinition ();
326
333
}
327
334
328
335
private void createSessionManagementFilters () {
0 commit comments