Ожидается, что Bean будет иметь тип CorsFilter, но на самом деле он имел тип UrlBasedCorsConfigurationSource с Spring Security 6.
Я хочу отключить CORS для моего интерфейса, написанного на Angular и работающего локально на порту 4200. Я создал конфигурацию, но, похоже, она не работает.
Я получаю эту ошибку в Spring Security 6 после попытки запустить приложение:
Bean named 'corsFilter' is expected to be of type
'org.springframework.web.filter.CorsFilter' but was actually of type
'org.springframework.web.cors.UrlBasedCorsConfigurationSource'
Я следую этому ответу и этому весеннему руководству .
Мой pom.xml
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>6.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>6.1.0</version>
</dependency>
Моя конфигурация безопасности
@Bean
public SecurityFilterChain configureSecurity(HttpSecurity http) throws Exception {
http
// ...
.cors(withDefaults());
return http.build();
}
@Bean
public CorsConfigurationSource corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.setAllowedOrigins(List.of("https://localhost:4200"));
config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return source;
}
В чем дело? Я использую bean-компонент типаCorsConfigurationSource
как будто они мне советуют, а Спринг все еще хочетCorsFilter
как это было в предыдущих версиях Spring Security?