Remove Servlet API dependency from SecurityProperties
A dependency on the Servlet API (the filter's dispatcher types) causes a failure when Spring Security is used in a non-web application. This commit removes the dependency on javax.servlet.DispatcherType in favour of using a Set of Strings. SecurityFilterAutoConfiguration, which is only enabled for web applications, is the responsible for converting each String to a DispatcherType. Closes gh-4505
This commit is contained in:
parent
2b3fbe9681
commit
f47449c800
|
|
@ -16,6 +16,12 @@
|
|||
|
||||
package org.springframework.boot.autoconfigure.security;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
|
|
@ -54,8 +60,17 @@ public class SecurityFilterAutoConfiguration {
|
|||
DelegatingFilterProxyRegistrationBean registration = new DelegatingFilterProxyRegistrationBean(
|
||||
DEFAULT_FILTER_NAME);
|
||||
registration.setOrder(securityProperties.getFilterOrder());
|
||||
registration.setDispatcherTypes(securityProperties.getFilterDispatcherTypes());
|
||||
registration.setDispatcherTypes(getDispatcherTypes(securityProperties));
|
||||
return registration;
|
||||
}
|
||||
|
||||
private EnumSet<DispatcherType> getDispatcherTypes(
|
||||
SecurityProperties securityProperties) {
|
||||
Set<DispatcherType> dispatcherTypes = new HashSet<DispatcherType>();
|
||||
for (String dispatcherType : securityProperties.getFilterDispatcherTypes()) {
|
||||
dispatcherTypes.add(DispatcherType.valueOf(dispatcherType));
|
||||
}
|
||||
return EnumSet.copyOf(dispatcherTypes);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,12 +18,10 @@ package org.springframework.boot.autoconfigure.security;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
|
||||
import org.springframework.boot.context.embedded.FilterRegistrationBean;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.core.Ordered;
|
||||
|
|
@ -104,7 +102,7 @@ public class SecurityProperties implements SecurityPrerequisite {
|
|||
/**
|
||||
* Security filter chain dispatcher types.
|
||||
*/
|
||||
private EnumSet<DispatcherType> filterDispatcherTypes;
|
||||
private Set<String> filterDispatcherTypes;
|
||||
|
||||
public Headers getHeaders() {
|
||||
return this.headers;
|
||||
|
|
@ -162,11 +160,11 @@ public class SecurityProperties implements SecurityPrerequisite {
|
|||
this.filterOrder = filterOrder;
|
||||
}
|
||||
|
||||
public EnumSet<DispatcherType> getFilterDispatcherTypes() {
|
||||
public Set<String> getFilterDispatcherTypes() {
|
||||
return this.filterDispatcherTypes;
|
||||
}
|
||||
|
||||
public void setFilterDispatcherTypes(EnumSet<DispatcherType> filterDispatcherTypes) {
|
||||
public void setFilterDispatcherTypes(Set<String> filterDispatcherTypes) {
|
||||
this.filterDispatcherTypes = filterDispatcherTypes;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue