|
|
|
@ -135,30 +135,34 @@ class WebMvcSecurityConfiguration implements WebMvcConfigurer, ApplicationContex |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
BeanDefinition hmiRequestTransformer = BeanDefinitionBuilder |
|
|
|
String hmiRequestTransformerBeanName = HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME + "RequestTransformer"; |
|
|
|
.rootBeanDefinition(HandlerMappingIntrospectorRequestTransformer.class) |
|
|
|
if (!registry.containsBeanDefinition(hmiRequestTransformerBeanName)) { |
|
|
|
.addConstructorArgReference(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME) |
|
|
|
BeanDefinition hmiRequestTransformer = BeanDefinitionBuilder |
|
|
|
.getBeanDefinition(); |
|
|
|
.rootBeanDefinition(HandlerMappingIntrospectorRequestTransformer.class) |
|
|
|
registry.registerBeanDefinition(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME + "RequestTransformer", |
|
|
|
.addConstructorArgReference(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME) |
|
|
|
hmiRequestTransformer); |
|
|
|
.getBeanDefinition(); |
|
|
|
|
|
|
|
registry.registerBeanDefinition(hmiRequestTransformerBeanName, hmiRequestTransformer); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
BeanDefinition filterChainProxy = registry |
|
|
|
BeanDefinition filterChainProxy = registry |
|
|
|
.getBeanDefinition(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME); |
|
|
|
.getBeanDefinition(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME); |
|
|
|
|
|
|
|
|
|
|
|
BeanDefinitionBuilder hmiCacheFilterBldr = BeanDefinitionBuilder |
|
|
|
if (!filterChainProxy.getResolvableType().isInstance(CompositeFilterChainProxy.class)) { |
|
|
|
.rootBeanDefinition(HandlerMappingIntrospectorCachFilterFactoryBean.class) |
|
|
|
BeanDefinitionBuilder hmiCacheFilterBldr = BeanDefinitionBuilder |
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); |
|
|
|
.rootBeanDefinition(HandlerMappingIntrospectorCacheFilterFactoryBean.class) |
|
|
|
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE); |
|
|
|
ManagedList<BeanMetadataElement> filters = new ManagedList<>(); |
|
|
|
|
|
|
|
filters.add(hmiCacheFilterBldr.getBeanDefinition()); |
|
|
|
ManagedList<BeanMetadataElement> filters = new ManagedList<>(); |
|
|
|
filters.add(filterChainProxy); |
|
|
|
filters.add(hmiCacheFilterBldr.getBeanDefinition()); |
|
|
|
BeanDefinitionBuilder compositeSpringSecurityFilterChainBldr = BeanDefinitionBuilder |
|
|
|
filters.add(filterChainProxy); |
|
|
|
.rootBeanDefinition(CompositeFilterChainProxy.class) |
|
|
|
BeanDefinitionBuilder compositeSpringSecurityFilterChainBldr = BeanDefinitionBuilder |
|
|
|
.addConstructorArgValue(filters); |
|
|
|
.rootBeanDefinition(CompositeFilterChainProxy.class) |
|
|
|
|
|
|
|
.addConstructorArgValue(filters); |
|
|
|
registry.removeBeanDefinition(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME); |
|
|
|
|
|
|
|
registry.registerBeanDefinition(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME, |
|
|
|
registry.removeBeanDefinition(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME); |
|
|
|
compositeSpringSecurityFilterChainBldr.getBeanDefinition()); |
|
|
|
registry.registerBeanDefinition(AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME, |
|
|
|
|
|
|
|
compositeSpringSecurityFilterChainBldr.getBeanDefinition()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -167,7 +171,7 @@ class WebMvcSecurityConfiguration implements WebMvcConfigurer, ApplicationContex |
|
|
|
* {@link FactoryBean} to defer creation of |
|
|
|
* {@link FactoryBean} to defer creation of |
|
|
|
* {@link HandlerMappingIntrospector#createCacheFilter()} |
|
|
|
* {@link HandlerMappingIntrospector#createCacheFilter()} |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
static class HandlerMappingIntrospectorCachFilterFactoryBean |
|
|
|
static class HandlerMappingIntrospectorCacheFilterFactoryBean |
|
|
|
implements ApplicationContextAware, FactoryBean<Filter> { |
|
|
|
implements ApplicationContextAware, FactoryBean<Filter> { |
|
|
|
|
|
|
|
|
|
|
|
private ApplicationContext applicationContext; |
|
|
|
private ApplicationContext applicationContext; |
|
|
|
|