diff --git a/config/src/main/java/org/springframework/security/config/http/HttpConfigurationBuilder.java b/config/src/main/java/org/springframework/security/config/http/HttpConfigurationBuilder.java index fdacf36e49..a4c55aeb8c 100644 --- a/config/src/main/java/org/springframework/security/config/http/HttpConfigurationBuilder.java +++ b/config/src/main/java/org/springframework/security/config/http/HttpConfigurationBuilder.java @@ -781,8 +781,8 @@ class HttpConfigurationBuilder { BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(FilterSecurityInterceptor.class); builder.addPropertyReference("accessDecisionManager", accessManagerId); builder.addPropertyValue("authenticationManager", authManager); - if ("false".equals(this.httpElt.getAttribute(ATT_ONCE_PER_REQUEST))) { - builder.addPropertyValue("observeOncePerRequest", Boolean.FALSE); + if ("true".equals(this.httpElt.getAttribute(ATT_ONCE_PER_REQUEST))) { + builder.addPropertyValue("observeOncePerRequest", Boolean.TRUE); } builder.addPropertyValue("securityMetadataSource", securityMds); builder.addPropertyValue("securityContextHolderStrategy", this.holderStrategyRef); diff --git a/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java b/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java index abe13893c0..955b030417 100644 --- a/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java +++ b/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java @@ -323,6 +323,13 @@ public class MiscHttpConfigTests { assertThat(filterSecurityInterceptor.isObserveOncePerRequest()).isFalse(); } + @Test + public void configureWhenOncePerRequestIsTrueThenFilterSecurityInterceptorObserveOncePerRequestIsTrue() { + this.spring.configLocations(xml("OncePerRequestTrue")).autowire(); + FilterSecurityInterceptor filterSecurityInterceptor = getFilter(FilterSecurityInterceptor.class); + assertThat(filterSecurityInterceptor.isObserveOncePerRequest()).isTrue(); + } + @Test public void requestWhenCustomHttpBasicEntryPointRefThenInvokesOnCommence() throws Exception { this.spring.configLocations(xml("CustomHttpBasicEntryPointRef")).autowire(); diff --git a/config/src/test/resources/org/springframework/security/config/http/MiscHttpConfigTests-OncePerRequestTrue.xml b/config/src/test/resources/org/springframework/security/config/http/MiscHttpConfigTests-OncePerRequestTrue.xml new file mode 100644 index 0000000000..47787c9c84 --- /dev/null +++ b/config/src/test/resources/org/springframework/security/config/http/MiscHttpConfigTests-OncePerRequestTrue.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + +