만들고 싶은 거 있을 때 마다 적용할테니 짤막하게 사용 방법만..
사용 전 build.gradle에 thymeleaf-extras-springsecurity6 라이브러리를 추가해줘야 한다.
나는 start.spring.io에서 처음에 프로젝트 생성 시 Spring Security를 선택해놔서 있긴한데 없으면 추가하자.
dependencies {
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
}
html에서 사용할 때는 아래와 같이 xmlns:sec="http://www.thymeleaf.org/extras/spring-security" 부분이 있어야 한다.
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
th:fragment="nav">
내가 자주 사용하는 속성은 아래 3개이다.
<th:block sec:authorize="hasRole('ADMIN')"> <!-- 로그인한 계정의 권한이 ADMIN일 경우 해당 메뉴 노출 -->
<a th:href="@{/board/list(code='B007')}">ADMIN</a>
</th:block>
<th:block sec:authorize="isAnonymous()"> <!-- 익명 계정일 경우 로그인 버튼 출력 -->
<a th:href="@{/login}">LOGIN</a>
</th:block>
<th:block sec:authorize="isAuthenticated()"> <!-- 권한 관계없이 인증 완료 후 로그아웃 버튼 출력 -->
<a th:href="@{/logout}">LOGOUT</a>
</th:block>
이제 로컬에서 테스트 해본다.
DB에 관리자 계정의 권한을 먼저 확인한다.

권한만 확인하자.(참고로 1이 아이디는 아니다)
아래 사진은 로그인 하기 전이다.

로그인을 하고 나면 ① 권한 관계없이 인증이 완료되었으므로 ‘LOGIN’ 메뉴가 아닌 ‘LOGOUT’으로 바뀌어져 있으며 ② 로그인한 계정의 권한이 ‘ADMIN’이므로 ‘ADMIN’ 메뉴가 노출된 것을 확인할 수 있다.

참고 레퍼런스
'SSR' 카테고리의 다른 글
| [SSR] SimpleMDE 적용하기 (0) | 2024.09.18 |
|---|