Polish "Configure ForwardedHeaderFilter with Tomcat's use relative redirects"
See gh-29333
This commit is contained in:
@@ -87,25 +87,21 @@ public class ServletWebServerFactoryAutoConfiguration {
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(value = "server.forward-headers-strategy", havingValue = "framework")
|
||||
@ConditionalOnMissingFilterBean(ForwardedHeaderFilter.class)
|
||||
static class ForwardedHeaderFilterConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnClass(name = "org.apache.catalina.startup.Tomcat")
|
||||
@ConditionalOnMissingFilterBean(ForwardedHeaderFilter.class)
|
||||
public FilterRegistrationBean<ForwardedHeaderFilter> tomcatForwardedHeaderFilter(
|
||||
ServerProperties serverProperties) {
|
||||
return createForwardedHeaderFilter(serverProperties.getTomcat().isUseRelativeRedirects());
|
||||
ForwardedHeaderFilterCustomizer tomcatForwardedHeaderFilterCustomizer(ServerProperties serverProperties) {
|
||||
return (filter) -> filter.setRelativeRedirects(serverProperties.getTomcat().isUseRelativeRedirects());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingFilterBean(ForwardedHeaderFilter.class)
|
||||
public FilterRegistrationBean<ForwardedHeaderFilter> defaultForwardedHeaderFilter() {
|
||||
return createForwardedHeaderFilter(false);
|
||||
}
|
||||
|
||||
private FilterRegistrationBean<ForwardedHeaderFilter> createForwardedHeaderFilter(boolean relativeRedirects) {
|
||||
FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter(
|
||||
ObjectProvider<ForwardedHeaderFilterCustomizer> customizerProvider) {
|
||||
ForwardedHeaderFilter filter = new ForwardedHeaderFilter();
|
||||
filter.setRelativeRedirects(relativeRedirects);
|
||||
customizerProvider.ifAvailable((customizer) -> customizer.customize(filter));
|
||||
FilterRegistrationBean<ForwardedHeaderFilter> registration = new FilterRegistrationBean<>(filter);
|
||||
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ASYNC, DispatcherType.ERROR);
|
||||
registration.setOrder(Ordered.HIGHEST_PRECEDENCE);
|
||||
@@ -114,6 +110,12 @@ public class ServletWebServerFactoryAutoConfiguration {
|
||||
|
||||
}
|
||||
|
||||
interface ForwardedHeaderFilterCustomizer {
|
||||
|
||||
void customize(ForwardedHeaderFilter filter);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a {@link WebServerFactoryCustomizerBeanPostProcessor}. Registered via
|
||||
* {@link ImportBeanDefinitionRegistrar} for early registration.
|
||||
|
||||
Reference in New Issue
Block a user