개발 ON
  • [SSR] Thymeleaf에서 Spring Security 사용하기(thymeleaf-extras-springsecurity6)
    2024년 10월 01일 16시 55분 02초에 업로드 된 글입니다.
    작성자: 이주여이

    만들고 싶은 거 있을 때 마다 적용할테니 짤막하게 사용 방법만..

     

    사용 전 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’ 메뉴가 노출된 것을 확인할 수 있다.

     

     

     


    참고 레퍼런스

    https://www.thymeleaf.org/doc/articles/springsecurity.html

    https://github.com/hobbyscripterII/blog

    'Study > SSR' 카테고리의 다른 글

    [SSR] SimpleMDE 적용하기  (0) 2024.09.18
    댓글