403처리
CustomAccessDeniedHandler.java
...
@Log4j
public class CustomAccessDeniedHandler implements AccessDeniedHandler {
@Override
public void handle(HttpServletRequest request,
HttpServletResponse response, AccessDeniedException accessException)
throws IOException, ServletException {
log.error("Access Denied Handler");
log.error("Redirect....");
response.sendRedirect("/accessError");
}
}
security-context.xml
<bean id="customAccessDenied"
class="org.zerock.security.CustomAccessDeniedHandler"></bean>
<security:http>
...
<security:access-denied-handler ref="customAccessDenied"/>
</security:http>
관련 개념 정리
1. AccessDeniedHandler란?
- Spring Security에서 인가(authorization) 실패 시 처리되는 인터페이스.
- 즉, 로그인은 했지만 권한이 없어서 접근이 거부될 때(403 Forbidden) 호출됨.
2. CustomAccessDeniedHandler 클래스
AccessDeniedHandler 인터페이스를 구현한 커스텀 핸들러.
- 구성 요소:
handle() 메서드: 인가 실패 시 호출됨.
HttpServletRequest, HttpServletResponse, AccessDeniedException을 인자로 받음.
- 로그 출력 (
log.error(...))
/accessError로 리다이렉트
🔁 동작 흐름:
- 사용자가 권한 없이 URL 접근 시
CustomAccessDeniedHandler.handle() 호출
- 로그 출력 후
/accessError 페이지로 리다이렉트
3. security-context.xml 설정
📌 핵심 요약
| 요소 | 역할 |
|---|
AccessDeniedHandler | 인가 실패(403) 발생 시 실행되는 인터페이스 |
<security:access-denied-handler> | 커스텀 핸들러를 Spring Security에 연결하는 설정 |