Ожидается, что 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?

0 ответов

Другие вопросы по тегам