이슈
스프링 부트로 블로그를 만드는 과제를 하고 있는데 내가 작성한 포스트 조회에 대한 API 명세서는 이러하였다.
이름 | Method | URL |
전체 게시글 조회 | GET | /JisooBlog |
선택 게시글 조회 | GET | /JisooBlog/1 |
이 두 기능은 인가 필터와 인증 필터를 거치지 않고 비회원에도 보여질 수 있게끔 하기 위해서 설정이 필요했다. WebSecurityConfig 클래스에서 http.authorizeHttpRequests.requestMatchers 설정을 해주면 되겠다 생각해서
http.authorizeHttpRequests((authorizeHttpRequests) ->
authorizeHttpRequests
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.requestMatchers("/JisooBlog/user/**").permitAll()
.requestMatchers("/JisooBlog").permitAll()
.anyRequest().authenticated()
);
다음과 같이 경로를 permitAll()하게끔 하면 될 줄 알았는데 전체 게시글 조회는 잘 되는데 선택 게시글 조회에서 forbidden 404 상태코드가 나왔다.
일단 해결(하였으나 추가 기록 필요)
requestMatchers()에서 주소를 어떻게 고쳐야 할 지 잘 모르겠어서 아예 API를 다음과 같이 수정하였다.
이름 | Method | URL |
전체 게시글 조회 | GET | /JisooBlog/view/all |
선택 게시글 조회 | GET | /JisooBlog/view/1 |
코드도 다음과 같이 수정하였다.
http.authorizeHttpRequests((authorizeHttpRequests) ->
authorizeHttpRequests
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.requestMatchers("/JisooBlog/user/**").permitAll()
.requestMatchers("/JisooBlog/view/**").permitAll()
.anyRequest().authenticated()
);
다음과 같이 코드를 수정하니 인증, 인가 필터를 거치지 않고 요청이 잘 보내졌다.
+
위와 같은 상황에서 API 명세를 바꾸지 않고 경로를 지정해주는 방법이 있었을까? 그 부분에 관해서는 튜터님께 여쭤보고 추가적으로 기록해야 할 것 같다.
'STUDY > SpringBoot' 카테고리의 다른 글
[TIL] SpringBoot dependency 버전 맞추기! (0) | 2023.07.25 |
---|---|
[TIL] SQLSyntaxError ( 컬럼명 like 문제) (0) | 2023.07.14 |
[TIL] AnnotationException 예외 발생 (mappedBy) (0) | 2023.07.13 |
[TIL] DefaultHandlerException 예외발생(추가공부 필요) (0) | 2023.07.11 |
[TIL] UnsatisfiedDependencyException : Unsatisfied dependency expressed through constructor parameter 0 해결하기 (0) | 2023.06.27 |