개발자의 오르막

[SpringSecurity #13] 타임리프 스프링 시큐리티 본문

SpringFrameWork/SpringSecurity

[SpringSecurity #13] 타임리프 스프링 시큐리티

계단 2020. 10. 5. 17:47

# Thymeleaf SpringSecurity

 

- build.gradle 에서 의존성을 추가해준다.

compile group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-springsecurity5', version: '3.0.4.RELEASE'

 

- authorization 을 통한 분기처리를 thymeleaf 문법을 통해 구현할 수 있다.

 

- Index.html

    <div th:if="${#authorization.expr('isAuthenticated()')}">
        <h2 th:text="${#authentication.name}">Name</h2>
        <a href="/logout" th:href="@{/logout}">Logout</a>
    </div>
    <div th:unless="${#authorization.expr('isAuthenticated()')}">
        <a href="/login" th:href="@{/login}">Login</a>
    </div>

 

위의 부분을 타임리프의 sec 네임스페이스를 쓰면 더 간결하게 바꿀 수 있다.

 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
    <h1 th:text="${message}">Hello</h1>
    <div sec:authorize-expr="isAuthenticated()">
        <h2 sec:authentication="name">Name</h2>
        <a href="/logout" th:href="@{/logout}">Logout</a>
    </div>
    <div sec:authorize-expr="!isAuthenticated()">
        <a href="/login" th:href="@{/login}">Login</a>
    </div>

    <!--
    <div th:if="${#authorization.expr('isAuthenticated()')}">
        <h2 th:text="${#authentication.name}">Name</h2>
        <a href="/logout" th:href="@{/logout}">Logout</a>
    </div>
    <div th:unless="${#authorization.expr('isAuthenticated()')}">
        <a href="/login" th:href="@{/login}">Login</a>
    </div>
    -->
</body>
</html>

  sec:authentication 을 통해 hasRole, anonymous 등을 설정할 수 있다.

 

 

Comments