인프런 커뮤니티 질문&답변

준상이님의 프로필 이미지

작성한 질문수

스프링부트 시큐리티 & JWT 강의

섹션0~섹션1 최신버전 업데이트 github 주소

특정 url필터 거는 방법 이슈

작성

·

225

·

수정됨

0

sign-in 이나 특정 몇개 url의 경우필터를 안타게 진행하고 싶어서 web.ignoreing으로 제외를 했는데 이는 정적인경우에 쓰는 거라고 하더라구요우선 문제는 스웨거에서는 저처릴 하더라도 동작이 제대로 되는데 프론트 단에서 axios전송시 동작이 제대로 안하는 이슈가 있습니다. 위 부분도 이상하고 다른 방법으로 필터를 안타게 하는 방법이 있는지 궁금합니다

 

 

@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
    return (web) ->        web.ignoring()
            .requestMatchers(PathRequest.toStaticResources().atCommonLocations())
            .requestMatchers("/api/v1/member/sign-in");
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

필터를 특정 URL에 적용하지 않으려 할 때 WebSecurityCustomizer를 사용하여 web.ignoring() 메서드로 정적 자원과 특정 API 경로를 무시하는 설정은 올바른 접근 방법 중 하나입니다. 준상이님이 작성한 코드는 정적 자원과 /api/v1/member/sign-in 경로에 대해 스프링 시큐리티 필터를 적용하지 않도록 설정하는 예제입니다. 다만, 문제가 되는 부분은 스웨거에서는 해당 설정이 예상대로 동작하는 반면, 프론트 엔드에서 axios를 통해 요청을 보낼 때 문제가 발생한다는 부분입니다.

일반적으로, web.ignoring()을 사용하여 설정한 경로는 스프링 시큐리티의 필터 체인을 거치지 않으므로, 프론트 엔드에서 axios 요청이 제대로 동작하지 않는 경우, 문제의 원인은 스프링 시큐리티 설정이 아닐 가능성이 높습니다. 이는 프론트 엔드에서 보내는 요청의 특성이나 서버 측에서 요청을 처리하는 방식 등 다른 부분에서 문제가 발생했을 수 있습니다. 예를 들어, 요청 헤더의 문제나 CORS(Cross-Origin Resource Sharing) 정책 위반 등이 원인일 수 있습니다.

이 문제를 해결하기 위해서는 다음과 같은 점들을 확인해볼 필요가 있습니다:
1. axios 요청에서 사용하는 헤더가 올바른지 검토합니다. 어떤 경우에는 특정 헤더를 요구할 수 있으며, 누락되거나 잘못 설정된 경우 요청 처리가 거부될 수 있습니다.
2. CORS 정책을 검토합니다. 프론트 엔드와 백엔드가 다른 도메인(또는 포트)에서 실행되고 있다면, 서버 측에서 적절한 CORS 허용 설정이 되어 있는지 확인해야 합니다.
3. 만약 이 문제가 여전히 해결되지 않는다면, 요청과 응답을 자세히 로깅하여 문제의 원인을 좀 더 구체적으로 진단해볼 필요가 있습니다.

이 외에도 필터를 적용하지 않으려는 경로에 대해서는 HttpSecurity를 사용하여 더 세밀하게 접근 제어를 설정할 수도 있습니다만, 주어진 정보만으로는 구체적인 설정 방법을 제안하기 어렵습니다.

정확한 문제 해결을 위해 프론트 엔드에서의 요청과 서버에서의 응답을 자세히 분석하는 것이 중요합니다.