-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
pathvariable 사용 시 인터셉터 문제
24.06.29 14:56 작성 24.06.30 15:46 수정 조회수 145
0
경로 변수를 사용하는 URL에 인터셉터가 예상대로 동작하지 않아서 예시를 통해 질문드립니다.
@GetMapping("/{item}/{itemId}")
public String itemDetail(@PathVariable("item") ItemType itemType, @PathVariable Long itemId, ...) {...}
ex) "/book/4", "/album/10"...
상품을 단순 조회하는 url은 로그인 체크 인터셉터 대상에서 제외합니다.
registry.addInterceptor(new LoginCheckInterceptor())
.order(1)
.addPathPatterns("/**")
.excludePathPatterns("/", "/{item}", "/{item}/{itemId}", ...);
이후 "/book/11"과 같이 접속하면 비로그인 상태에서도 조회됩니다.
근데 판매자만 접근할 수 있어서 로그인이 필요한 "/book/new"라는 url이 요청되면, 예상과 달리 로그인 인터셉터를 거치지 않고 정상 조회됩니다. @GetMapping("/{item}/new")
addpathpatterens에 "/{item}/new"를 따로 추가해보거나 공식 메뉴얼을 참고해봤는데 관련된 내용을 찾지 못했습니다.
원인은 excludePathPatterns에 추가한 "/{item}/{itemId}"의 {itemId}에
요청한 url "/book/new" new가 매칭되기 때문에 "/book/new"도 인터셉터에서 제외된 것 같습니다.
그래서 url을 "/movie/100"이 아니라 "/items/movie/100"과 같이 사용하거나 또는 상품 등록 url을 "/items/new"처럼 정해서 사용해야 하는데..
이와 관련해 해결 방법이 있을까요?
그냥 dtype이나 Id값은 쿼리파라미터로 받는 게 나을지도 모르겠네요..
답변을 작성해보세요.
0
![CS님의 프로필](https://cdn.inflearn.com/public/main/profile/default_profile.png?w=48)
CS
질문자2024.06.30
addPathPatterns만 사용해서 로그인이 필요한 url을 빼먹지 않고 추가해주는 게 최선인 것 같습니다. 그래도 url은 계층적인 구조로 바꿀 수 있게 됐네요..
답변 1