|
24 | 24 | import org.springframework.util.ClassUtils; |
25 | 25 | import org.springframework.web.cors.CorsConfiguration; |
26 | 26 | import org.springframework.web.cors.CorsConfigurationSource; |
| 27 | +import org.springframework.web.cors.PreFlightRequestHandler; |
27 | 28 | import org.springframework.web.filter.CorsFilter; |
28 | 29 | import org.springframework.web.servlet.handler.HandlerMappingIntrospector; |
29 | 30 |
|
@@ -109,13 +110,14 @@ static class MvcCorsFilter { |
109 | 110 | private static CorsFilter getMvcCorsFilter(ApplicationContext context) { |
110 | 111 | if (!context.containsBean(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME)) { |
111 | 112 | throw new NoSuchBeanDefinitionException(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME, "A Bean named " |
112 | | - + HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME + " of type " |
113 | | - + HandlerMappingIntrospector.class.getName() |
| 113 | + + HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME + " of type " + PreFlightRequestHandler.class.getName() |
114 | 114 | + " is required to use MvcRequestMatcher. Please ensure Spring Security & Spring MVC are configured in a shared ApplicationContext."); |
115 | 115 | } |
116 | | - HandlerMappingIntrospector mappingIntrospector = context.getBean(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME, |
117 | | - HandlerMappingIntrospector.class); |
118 | | - return new CorsFilter(mappingIntrospector); |
| 116 | + PreFlightRequestHandler mappingIntrospector = context.getBean(HANDLER_MAPPING_INTROSPECTOR_BEAN_NAME, |
| 117 | + PreFlightRequestHandler.class); |
| 118 | + Assert.isInstanceOf(CorsConfigurationSource.class, mappingIntrospector, |
| 119 | + () -> "mappingIntrospector must implement " + CorsConfigurationSource.class.getName()); |
| 120 | + return new CorsFilter((CorsConfigurationSource) mappingIntrospector); |
119 | 121 | } |
120 | 122 |
|
121 | 123 | } |
|
0 commit comments