AccessDeniedHandler를 직접 구현하여 인가 예외 처리에 대한 질문입니다.
안녕하세요
Spring Security ExceptionTranslationFilter 강의 09:00 부터 진행하는 내용을 듣고 질문사항이 생겨 글을 남깁니다.
인증/인가 예외 처리 필터인 ExceptionTranslationFilter 기능 중 AccessDeniedException(인가 처리 실패 예외)에 대해
예외를 처리할 수 있는 페이지를 설정하는 방법과, AccessDeniedHandler를 직접 구현해서 사용하는 방법이 있었는데요.
accessDeniedHandler() 메소드를 사용하지 않고 accessDeniedPage() 메소드를 사용하여 URL을 지정하고,
Controller와 HandlerMethod를 구현하였습니다.
이때 HandlerMethod의 인자로 Principal 객체, Model 객체 외 HttpServletRequest 객체를 넘겨 받아 AccessDeniedHandler를 직접 구현한 것과 마찬가지로 "로그 출력", "VIEW에서 인증된 사용자 정보와 함께 에러 메시지 출력"을 하였는데요.
이렇게만 본다면 AccessDeniedHandler를 직접 구현하는 것과 예외를 처리할 수 있는 페이지를 설정하여 HandlerMethod에서 처리하는 것의 차이가 없어 보였습니다.
AccessDeniedHandler를 직접 구현하여 얻을 수 있는 추가적인 장점이 있을까요?

미리 답변 감사드립니다.
답변 1
1
인가 처리 에러 핸들러에 어떤 로직을 넣을거냐에 달린거죠. 말씀하신대로 단순하게만 구현할꺼라면 굳이 구현할 필요없이 스프링 시큐리티가 기본으로 제공하는 기능 그대로 쓰면 되지만, "가령 3회 이상 인증 에러 발생시 해당 계정을 사용하지 못하게 막고 반드시 패스워드를 변경해야만 접근할 수있도록 한다."와 같은 로직을 구현하려면 보여주신 코드에 조금 더 로직을 추가할 수 있겠죠.
커스텀 로그인 페이지를 등록할 경우 LogoutFilter의 등록 여부 질문
0
384
1
anonymousClass를 사용하는 이유
0
387
1
ExcpetionTranslationFilter가 FilterSecurityInterceptor에서 발생하는 예외만 처리하는 이유
0
242
1
Principal 인터페이스와 User 클래스의 관계
0
756
1
passwordEncoder 질문드립니다.
0
320
1
WebSecurityConfigurerAdapter is deprecated 가 불편하신 분들을 위해
6
864
1
왜 스프링은 userid가 아니고 username을 사용했을까요?
0
1022
1
무상태성
0
347
2
로그인 후 로그인 페이지 접속
0
282
1
AuthenticationException은 어떤 경우에 발생하는지
0
557
1
AccountService에 비밀번호
1
225
1
커스텀 어노테이션 의 `커스텀 value` 설정방법에 관한 질문입니다.
0
356
1
passwordEncoder 빈 생성 시 차이
0
254
1
Bean 등록 관련 질문입니다.
0
248
1
시큐리티 전략관련
0
355
3
브라우저 기반 요청이 클라이언트의 요청을 처리 -> 의 의미?
0
228
1
AccountControllerTest 실행오류
0
1066
1
알려주신대로 설정을 해도 다시 302요청을 보냅니다....
0
342
1
voter에 대해 질문이 있습니다.
0
226
1
제가 맞게 이해한것인지 궁금합니다.
1
234
1
Spring security test 수행시 @AuthenticationPrincipal 가 null 로 세팅됨
0
550
1
Spring security Multi 인증 문의드려요
0
290
1
ProviderManager 문의
0
269
1
UserDetailsService 가 DaoAuthenticationProvider 에 어떻게 주입 되는지 알 수 있을 까요?
0
328
1





