작성
·
38
·
수정됨
0
스프링 부트 3.4.3, 스프링 시큐리티 6.4.3 기준입니다.
다음과 같이 설정하게 되면 api/**
는 적용되지 않고 oauth/**
에만 적용됩니다.
http.securityMatchers(matchers ->
matchers.requestMatchers("/api/**")
)
.securityMatchers(matchers ->
matchers.requestMatchers("/oauth/**")
);
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. djqwkfj43u님, 질문 주신 내용은 Spring Security에서 설정된 securityMatchers
의 우선순위가 어떻게 적용되는지에 대한 것 같습니다.
스프링 시큐리티에서는 각 요청 패턴에 대한 설정을 마지막에 지정한 것만 유효하게 되는 점이 있습니다. 따라서 위의 코드에서는 ‘api/**‘에 대한 설정이 덮어씌워지는 문제가 발생하는데요, 어떤 패턴이든 마지막으로 쓰여진 설정이 적용됩니다. 이는 HttpSecurity
설정이 빌더 패턴으로 구현되어 있기 때문에 발생합니다.
두 개의 securityMatchers
를 개별로 설정할 때는 설정 순서를 주의해야 합니다. 앞서 설정한 특정 경로 패턴이 다음 설정에 의해 덮어쓰여지지 않도록 주의해야 합니다. 중복되는 설정이 있다면 하나의 securityMatchers
안에서 각각의 requestMatchers
를 정의함으로써 해결할 수 있습니다.
관련 정보를 보완하기 위해 참고할 만한 페이지가 있어 링크를 드립니다:
위의 링크를 통해 각 설정의 유효성과 사용법에 대해 더 명확하게 이해하실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.