diff --git a/config/src/main/java/org/springframework/security/config/http/PathPatternRequestMatcherFactoryBean.java b/config/src/main/java/org/springframework/security/config/http/PathPatternRequestMatcherFactoryBean.java
index 116f2ccd12..39e13a02ac 100644
--- a/config/src/main/java/org/springframework/security/config/http/PathPatternRequestMatcherFactoryBean.java
+++ b/config/src/main/java/org/springframework/security/config/http/PathPatternRequestMatcherFactoryBean.java
@@ -70,7 +70,7 @@ public final class PathPatternRequestMatcherFactoryBean
@Override
public void afterPropertiesSet() throws Exception {
if (this.basePath != null) {
- this.builder.basePath(this.basePath);
+ this.builder = this.builder.basePath(this.basePath);
}
}
diff --git a/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java b/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java
index fab1e932c0..2038828317 100644
--- a/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java
@@ -314,6 +314,78 @@ public class InterceptUrlConfigTests {
.autowire());
}
+ @Test
+ public void requestWhenUsingDefaultMatcherAndServletPathThenAuthorizesRequestsAccordingly() throws Exception {
+ this.spring.configLocations(this.xml("DefaultMatcherServletPath")).autowire();
+ // @formatter:off
+ this.mvc.perform(get("/spring/path").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ this.mvc.perform(get("/path").with(userCredentials()))
+ .andExpect(status().isOk());
+ // @formatter:on
+ }
+
+ @Test
+ public void requestWhenUsingDefaultMatcherAndServletPathAndAuthorizationManagerThenAuthorizesRequestsAccordingly()
+ throws Exception {
+ this.spring.configLocations(this.xml("DefaultMatcherServletPathAuthorizationManager")).autowire();
+ // @formatter:off
+ this.mvc.perform(get("/spring/path").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ this.mvc.perform(get("/path").with(userCredentials()))
+ .andExpect(status().isOk());
+ // @formatter:on
+ assertThat(this.spring.getContext().getBean(AuthorizationManager.class)).isNotNull();
+ }
+
+ @Test
+ public void requestWhenUsingRegexMatcherThenAuthorizesRequestsAccordingly() throws Exception {
+ this.spring.configLocations(this.xml("RegexMatcher")).autowire();
+ // @formatter:off
+ this.mvc.perform(get("/path").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ this.mvc.perform(get("/other").with(userCredentials()))
+ .andExpect(status().isNotFound());
+ // @formatter:on
+ }
+
+ @Test
+ public void requestWhenUsingRegexMatcherAndAuthorizationManagerThenAuthorizesRequestsAccordingly()
+ throws Exception {
+ this.spring.configLocations(this.xml("RegexMatcherAuthorizationManager")).autowire();
+ // @formatter:off
+ this.mvc.perform(get("/path").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ this.mvc.perform(get("/other").with(userCredentials()))
+ .andExpect(status().isNotFound());
+ // @formatter:on
+ assertThat(this.spring.getContext().getBean(AuthorizationManager.class)).isNotNull();
+ }
+
+ @Test
+ public void requestWhenUsingCiRegexMatcherThenAuthorizesRequestsAccordingly() throws Exception {
+ this.spring.configLocations(this.xml("CiRegexMatcher")).autowire();
+ // @formatter:off
+ this.mvc.perform(get("/path").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ this.mvc.perform(get("/PATH").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ // @formatter:on
+ }
+
+ @Test
+ public void requestWhenUsingCiRegexMatcherAndAuthorizationManagerThenAuthorizesRequestsAccordingly()
+ throws Exception {
+ this.spring.configLocations(this.xml("CiRegexMatcherAuthorizationManager")).autowire();
+ // @formatter:off
+ this.mvc.perform(get("/path").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ this.mvc.perform(get("/PATH").with(userCredentials()))
+ .andExpect(status().isForbidden());
+ // @formatter:on
+ assertThat(this.spring.getContext().getBean(AuthorizationManager.class)).isNotNull();
+ }
+
@Test
public void requestWhenUsingFilterAllDispatcherTypesAndAuthorizationManagerThenAuthorizesRequestsAccordingly()
throws Exception {
diff --git a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-CiRegexMatcher.xml b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-CiRegexMatcher.xml
new file mode 100644
index 0000000000..37780a6735
--- /dev/null
+++ b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-CiRegexMatcher.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-CiRegexMatcherAuthorizationManager.xml b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-CiRegexMatcherAuthorizationManager.xml
new file mode 100644
index 0000000000..f0b4bd71d7
--- /dev/null
+++ b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-CiRegexMatcherAuthorizationManager.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPath.xml b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPath.xml
index 28d4a6cb4b..2f6eba90fc 100644
--- a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPath.xml
+++ b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPath.xml
@@ -26,8 +26,11 @@
+
+
+
diff --git a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPathAuthorizationManager.xml b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPathAuthorizationManager.xml
index 557083ccd8..fefc79d0e5 100644
--- a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPathAuthorizationManager.xml
+++ b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-DefaultMatcherServletPathAuthorizationManager.xml
@@ -26,8 +26,11 @@
+
+
+
diff --git a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-RegexMatcher.xml b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-RegexMatcher.xml
new file mode 100644
index 0000000000..d362d91f27
--- /dev/null
+++ b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-RegexMatcher.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-RegexMatcherAuthorizationManager.xml b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-RegexMatcherAuthorizationManager.xml
new file mode 100644
index 0000000000..47fd1c675e
--- /dev/null
+++ b/config/src/test/resources/org/springframework/security/config/http/InterceptUrlConfigTests-RegexMatcherAuthorizationManager.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+