CORS проблемы с безопасностью весенней загрузки - PullRequest
0 голосов
/ 02 мая 2018

Я использую пружинную загрузку, пружинную защиту и хочу избежать каких-либо действий cors. Я пытаюсь второй ответ отсюда ( Можете ли вы полностью отключить поддержку CORS в Spring? ), где мне нужно добавить пользовательский фильтр для Cors, вот фильтр:

@Component
public class CorsFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response,
                                    final FilterChain filterChain) throws ServletException, IOException {

        response.addHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, PATCH, HEAD");
        response.addHeader("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
        response.addHeader("Access-Control-Expose-Headers", "Access-Control-Allow-Origin, Access-Control-Allow-Credentials");
        response.addHeader("Access-Control-Allow-Credentials", "true");
        response.addIntHeader("Access-Control-Max-Age", 10);
        filterChain.doFilter(request, response);
    }
}

Итак, я создал класс вставки CorsFilter, и я получил ошибку:

'springSecurityFilterChain' threw exception; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'corsFilter' is expected to be of type 'org.springframework.web.filter.CorsFilter' but was actually of type 'fa.backend.core.security.CorsFilter'

Моя конфигурация безопасности выглядит следующим образом:

 @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and().antMatcher("/users").authorizeRequests()
                .antMatchers(HttpMethod.POST, "/login").permitAll()
                .and()
                .addFilterBefore(
                        new JWTLoginFilter(tokenAuthentication, authenticationManagerBean()),
                        UsernamePasswordAuthenticationFilter.class)
                .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
    }

Не могли бы вы сказать мне, как это исправить? Моя цель - отключить любые действия cors, потому что из внешнего интерфейса я получаю:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8081' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

1 Ответ

0 голосов
/ 02 мая 2018

удалить часть 'cors ().' После http в настройке переопределения. Ниже приведен фрагмент.

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/users").authorizeRequests()
                .antMatchers(HttpMethod.POST, "/login").permitAll()
                .and()
                .addFilterBefore(
                        new JWTLoginFilter(tokenAuthentication, authenticationManagerBean()),
                        UsernamePasswordAuthenticationFilter.class)
                .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
    }
...