728x90
- 인증은 성공한 사용자가 자원에 접근할 권한이 없을 경우 ExceptionTranslateFilter에서 잡게 되고, CustomHandler를 실행시켜 줄 수가 있다.
- CustomAccessDeniedHandler

인증은 성공했으나 권한이 없는 사용자가 접근할 경우 해당 핸들러를 실행시켜준다. - 사용자가 접근할수 없는 URL인 것을 알려주고, 파라미터로 Exception을 전달하여 준다.
- SecurityContext


Bean으로 등록하여 ErrorPageURL을 주입한다.
- 인증에 성공한 뒤, 접근 권한이 없을 경우 /denied로 redirect 한다

접근권한이 없음을 알려주는 페이지 - denied.html
-
<!DOCTYPE html> <html lang="ko" xmlns:th="http://www.thymeleaf.org"> <head th:replace="layout/header::userHead"></head> <body> <div th:replace="layout/top::header"></div> <div class="container"> <div class="row align-items-start"> <nav class="col-md-2 d-none d-md-block bg-light sidebar"> <div class="sidebar-sticky"> <ul class="nav flex-column"> <li class="nav-item"> <div style="padding-top:10px;" class="nav flex-column nav-pills" aria-orientation="vertical"> <a th:href="@{/}" style="margin:5px;" class="nav-link text-primary">대시보드</a> <a th:href="@{/mypage}" style="margin:5px;" class="nav-link text-primary">마이페이지</a> <a th:href="@{/messages}" style="margin:5px;" class="nav-link text-primary">메시지</a> <a th:href="@{/config}" style="margin:5px;" class="nav-link text-primary">환경설정</a> </div> </li> </ul> </div> </nav> <div style="padding-top:50px;" class="col"> <div class="container text-center"> <h1><span th:text="${username}" class="alert alert-danger" />님은 접근 권한이 없습니다.</h1> <br /> <h3 th:text="${exception}"></h3> </div> </div> </div> </div> <div th:replace="layout/footer::footer"></div> </body> </html>
728x90