본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 쇼핑몰 - 16 페이지 권한 막기 (IntercepterConfig)

by 환풍 2023. 3. 29.
728x90
반응형

 

 

위와 같이 관리자 전용 관리페이지를 띄울 시 로그인이 안되어있는데,

지금은 악의적으로 사용자가 주소창에 주소를 쳐서 들어올 수 있는 보안에 아주 취약한 사이트이다.

이걸 막아줘보자.

 

하지만, 관리자페이지에 연관되어있는 곳에마다 다 해주면 또 응집도가 떨어질 수 있으니, intercepter를 사용해서 해보자.

AuthoIntercepter 클래스

preHandle을 Override로 받아와주었다. preHandle은 특정 메소드가 실행되기 전에 가장 처음으로 호출해준다.

위와 같이 HttpSession을 이용해서 session 값을 요청받아왔고, MemberVO 객체에 loginInfo 데이터를 저장했다.

이후 조건문을 주어 페이지 이동처리를 하였다.

intercepterConfig 클래스

AuthoIntercepter는 preHandle이기 때문에 먼저 실행이 되므로, MenuIntercepter보다 먼저 실행이 된다.

하지만 만약 같은 Handle이라면 order를 사용해 순서를 줄 수 있다.

order(1)이 실행된 후 order(2)가 실행이 되게 순서를 정해줄 수도 있다.

 

단, ajax가 intercepter랑 동시에 실행되면 충돌가능성이 매우 높다.

@ResponseBody와 같이 Ajax가 실행되는 메소드는 intercepter를 제외하는게 맞다.

그래서 .excludePathPatterns("/admin/*Ajax"); 를 추가해줘서 Ajax가 실행되는 메소드에는 intercepter를 제외시켰다.

~~~ Ajax 경로로 오는 것을 막아버리겠다. 라는 뜻이다.

cate_manage.js

컨트롤 F를 눌러 찾아서, cate_manage.js 에서 경로로 줬던 곳에 모두 Ajax를 추가시켜버리자.

 

컨트롤 h 눌러 cate_manage.js 뿐만아니라 모두 찾아보자.

 

AdminController 컨트롤러

컨트롤러로 넘어와서 @ResponseBody가 실행되는 Ajax에 위에서 바꾼 것처럼 경로를 모두 Ajax를 넣어 추가해준다.

그러면 정상적으로 intercepterConfig에서 하고자했던 기능이 잘 실행되는 것을 볼 수 있다.

728x90
반응형

댓글