728x90
반응형
sec:authorize는 **스프링 시큐리티(Spring Security)**와 **타임리프(Thymeleaf)**를 함께 사용할 때 사용자의 인증 및 권한 상태를 기반으로 특정 HTML 요소를 조건부로 출력할 수 있게 해주는 타임리프 확장 기능입니다.
이 속성은 사용자의 로그인 여부나 권한에 따라 해당 HTML 요소를 렌더링할지 여부를 제어합니다. sec:authorize는 스프링 시큐리티의 보안 기능을 HTML 템플릿에서 쉽게 활용할 수 있도록 도와줍니다.
주요 기능
- sec:authorize="isAuthenticated()": 사용자가 로그인되어 있을 때만 해당 HTML 요소를 출력합니다.
- sec:authorize="isAnonymous()": 사용자가 **로그인하지 않은 상태(익명)**일 때만 해당 HTML 요소를 출력합니다.
- sec:authorize="hasRole('ROLE_USER')": 사용자가 특정 **권한(ROLE_USER)**을 가지고 있을 때 해당 HTML 요소를 출력합니다.
사용 예시
1. 로그인 상태에 따라 표시할 항목 제어
<a class="nav-link" sec:authorize="isAnonymous()" th:href="@{/user/login}">로그인</a>
<a class="nav-link" sec:authorize="isAuthenticated()" th:href="@{/user/logout}">로그아웃</a>
- 로그인하지 않은 경우(익명 사용자)에는 '로그인' 링크가 표시되고, 로그인된 경우에는 '로그아웃' 링크가 표시됩니다.
2. 특정 권한이 있는 사용자만 볼 수 있는 기능
<a class="nav-link" sec:authorize="hasRole('ROLE_ADMIN')" th:href="@{/admin}">관리자 페이지</a>
- ROLE_ADMIN 권한이 있는 사용자에게만 '관리자 페이지' 링크가 표시됩니다.
주요 메서드
- isAuthenticated(): 로그인한 사용자인지 확인합니다.
- isAnonymous(): 익명 사용자(로그인하지 않은 사용자)인지 확인합니다.
- hasRole('ROLE_NAME'): 사용자가 특정 권한을 가지고 있는지 확인합니다.
- hasAuthority('AUTHORITY_NAME'): 권한(Authority)을 가지고 있는지 확인합니다. hasRole과 비슷하지만 더 세밀하게 권한을 지정할 수 있습니다.
요약
- sec:authorize는 사용자의 인증 상태나 권한에 따라 HTML 요소의 표시 여부를 제어하는 타임리프 확장 기능입니다.
- 이를 통해 로그인 상태에 따라 버튼이나 메뉴를 제어할 수 있고, 특정 권한을 가진 사용자만 접근할 수 있는 기능을 구현할 수 있습니다.
'Category > SpringBoot' 카테고리의 다른 글
| 스프링 시큐리티 @PreAuthorize("isAuthenticated()") (0) | 2024.09.05 |
|---|---|
| 스프링 시큐리티 Principal (0) | 2024.09.05 |
| 스프링 시큐리티 .invalidateHttpSession(true) (0) | 2024.09.05 |
| 스프링 시큐리티 @PostMapping (0) | 2024.09.05 |
| 스프링 시큐리티(Spring Security)란? (0) | 2024.09.04 |