SpringSecurity를 설정하다보니 Method레벨(global-method-security)에서의 AccessDeniedException은 그 전에 설정해놓은 <access-denied-handler>에 걸리지 않는 것을 알게 되었다.


왜 그런가 찾다보니 스택오버플로우[1]에서 답을 찾았는데

내 상황이 답을 준것처럼 처리하기에는 정확히 맞지 않는 상황이었다.


- StackOverFlow 번역 -

access-denied-handler는 AccessDeniedException가 발생할 때 ExceptionTranslationFilter에 의해 사용됩니다.

그러나 org.springframework.web.servlet.DispatcherServlet은 먼저 예외 처리를 시도했다.

특히 defaultErrorView로 정의 된 org.springframework.web.servlet.handler.SimpleMappingExceptionResolver가 있는데, 결과적으로 SimpleMappingExceptionResolver는 적절한 뷰로 리디렉션하여 예외를 소비하므로 결과적으로 ExceptionTranslationFilter에 버블링 될 예외가 없습니다.


수정은 간단했다. 모든 AccessDeniedException을 무시하도록 SimpleMappingExceptionResolver를 구성하십시오.


applicationContext.xml


이제는 AccessDeniedException이 발생할 때마다 SimpleMappingExceptionResolver를 무시하고 ExceptionTranslationFilter를 통해 예외 처리를 하게 됩니다.



- 내 해결 방식 -

내 프로젝트에서는 위와 같이 설정하기 난해한 부분이 있어서 중복이여서 아쉽지만 web.xml에 이동 페이지를 설정하게 해주었다.


web.xml



Reference

[1] Spring Security ignoring access-denied-handler with Method Level Security (http://stackoverflow.com/questions/21171882/spring-security-ignoring-access-denied-handler-with-method-level-security)



저작자 표시 비영리 변경 금지
신고

Leave a Comment





메뉴 : 두부참치볶음김치, 스팸

술 : 클라우드, 참이슬



갑자기 술이 당겨서 만들어서 먹었다.

두부 김치는 늘 진리인것 같다.

들기름에 참치와 김치를 볶아서 먹으니 맛이 일품이다.




저작자 표시 비영리 변경 금지
신고

Leave a Comment


복부




가슴




어깨



다리





호흡법

수축시(힘을 줄 때) 호흡을 뱉고 이완시 호흡을 들이 마십니다.


예1) 바벨컬 : 바벨을 들어올릴때 호흡을 뱉음

예2) 스쿼트 : 일어설 때 뱉음




저작자 표시 비영리 변경 금지
신고

Leave a Comment


to Top

티스토리 툴바