Guard ErrorPageSecurityFilter configuration with ConditionalOnClass
Update `ErrorPageSecurityFilterConfiguration` to guard against the case where `spring-security-core` is on the classpath but `spring-security-web` is not. Fixes gh-28774
This commit is contained in:
parent
49e408828c
commit
e7ff2cf358
|
|
@ -21,6 +21,7 @@ import java.util.EnumSet;
|
||||||
import javax.servlet.DispatcherType;
|
import javax.servlet.DispatcherType;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||||
import org.springframework.boot.web.servlet.filter.ErrorPageSecurityFilter;
|
import org.springframework.boot.web.servlet.filter.ErrorPageSecurityFilter;
|
||||||
|
|
@ -35,6 +36,7 @@ import org.springframework.security.web.access.WebInvocationPrivilegeEvaluator;
|
||||||
* @author Madhura Bhave
|
* @author Madhura Bhave
|
||||||
*/
|
*/
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
@ConditionalOnClass(WebInvocationPrivilegeEvaluator.class)
|
||||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||||
class ErrorPageSecurityFilterConfiguration {
|
class ErrorPageSecurityFilterConfiguration {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,18 @@ class SecurityAutoConfigurationTests {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void filterForErrorPageSecurityInterceptorWhenWebInvocationPrivilegeEvaluatorNotPresent() {
|
||||||
|
this.contextRunner.withClassLoader(new FilteredClassLoader("org.springframework.security.config"))
|
||||||
|
.run((context) -> assertThat(context).doesNotHaveBean("errorPageSecurityFilter"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void filterForErrorPageSecurityInterceptorConditionalOnClass() {
|
||||||
|
this.contextRunner.withClassLoader(new FilteredClassLoader("org.springframework.security.web"))
|
||||||
|
.run((context) -> assertThat(context).doesNotHaveBean("errorPageSecurityFilter"));
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@TestAutoConfigurationPackage(City.class)
|
@TestAutoConfigurationPackage(City.class)
|
||||||
static class EntityConfiguration {
|
static class EntityConfiguration {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue