Skip to content

Commit f9619ce

Browse files
committed
Extract createSecurityContextRepository()
Extract out method in preparation for adding SecurityContextHolderFilter configuration. Issue gh-9635
1 parent cbba7ea commit f9619ce

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

config/src/main/java/org/springframework/security/config/http/HttpConfigurationBuilder.java

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ class HttpConfigurationBuilder {
202202
this.sessionPolicy = !StringUtils.hasText(createSession) ? SessionCreationPolicy.IF_REQUIRED
203203
: createPolicy(createSession);
204204
createCsrfFilter();
205+
createSecurityContextRepository();
205206
createSecurityContextPersistenceFilter();
206207
createSessionManagementFilters();
207208
createWebAsyncManagerFilter();
@@ -280,17 +281,29 @@ static String createPath(String path, boolean lowerCase) {
280281

281282
private void createSecurityContextPersistenceFilter() {
282283
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() {
283301
String repoRef = this.httpElt.getAttribute(ATT_SECURITY_CONTEXT_REPOSITORY);
284302
String disableUrlRewriting = this.httpElt.getAttribute(ATT_DISABLE_URL_REWRITING);
285303
if (!StringUtils.hasText(disableUrlRewriting)) {
286304
disableUrlRewriting = "true";
287305
}
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)) {
294307
BeanDefinitionBuilder contextRepo;
295308
if (this.sessionPolicy == SessionCreationPolicy.STATELESS) {
296309
contextRepo = BeanDefinitionBuilder.rootBeanDefinition(NullSecurityContextRepository.class);
@@ -300,15 +313,12 @@ private void createSecurityContextPersistenceFilter() {
300313
switch (this.sessionPolicy) {
301314
case ALWAYS:
302315
contextRepo.addPropertyValue("allowSessionCreation", Boolean.TRUE);
303-
scpf.addPropertyValue("forceEagerSessionCreation", Boolean.TRUE);
304316
break;
305317
case NEVER:
306318
contextRepo.addPropertyValue("allowSessionCreation", Boolean.FALSE);
307-
scpf.addPropertyValue("forceEagerSessionCreation", Boolean.FALSE);
308319
break;
309320
default:
310321
contextRepo.addPropertyValue("allowSessionCreation", Boolean.TRUE);
311-
scpf.addPropertyValue("forceEagerSessionCreation", Boolean.FALSE);
312322
}
313323
if ("true".equals(disableUrlRewriting)) {
314324
contextRepo.addPropertyValue("disableUrlRewriting", Boolean.TRUE);
@@ -320,9 +330,6 @@ private void createSecurityContextPersistenceFilter() {
320330
}
321331

322332
this.contextRepoRef = new RuntimeBeanReference(repoRef);
323-
scpf.addConstructorArgValue(this.contextRepoRef);
324-
325-
this.securityContextPersistenceFilter = scpf.getBeanDefinition();
326333
}
327334

328335
private void createSessionManagementFilters() {

0 commit comments

Comments
 (0)