sec:authorize는 스프링 시큐리티에서 제공하는 기능이므로, 스프링 시큐리티 의존성을 추가하셔야 합니다. 또한 isAuthenticated() 메서드를 사용하기 위해서는 스프링 시큐리티 설정 파일에서 로그인 인증을 구현해야 합니다. 설정 파일에 인증 구현을 추가하신 후 sec:authorize 기능을 사용하시면 됩니다.

스프링 시큐리티로 구현한 로그인 이후 권한에 따른 메뉴바의 아이템을 다르게 설정 해주었습니다.

<aside> ✅ isAuthenticated() 메서드는 스프링 시큐리티에서 제공하는 메서드 중 하나로, 현재 사용자가 인증된 사용자인지를 확인해주는 역할을 합니다. 만약 현재 사용자가 인증된 사용자이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 이 메서드를 사용하여 로그인한 사용자와 로그인하지 않은 사용자를 구분하여 다른 메뉴를 보여줄 수 있습니다.

</aside>

<div sec:authorize-expr="isAuthenticated()">
    <ul class="nav navbar-nav navbar-right">
        <li><a href="/board/form"><span class="glyphicon glyphicon-edit"></span> 글쓰기</a></li>
        <li><a href="/user/form"><span class="glyphicon glyphicon-user"></span> 회원정보</a></li>
        <li><a href="/logout"><span class="glyphicon glyphicon-log-out"></span> 로그아웃</a></li>
    </ul>
</div>

<div sec:authorize-expr="!isAuthenticated()">
    <ul class="nav navbar-nav navbar-right">
        <li><a href="/auth/joinForm"><span class="glyphicon glyphicon-user"></span> 회원가입</a></li>
        <li><a href="/auth/loginForm"><span class="glyphicon glyphicon-log-in"></span> 로그인</a></li>
    </ul>
</div>

인증된 사용자라면 글쓰기, 회원정보, 로그아웃 아이템, 반대라면 회원가입, 로그인 아이템을 보여주어야 하는데…

Untitled

정상적으로 적용이 되질 않는 모습입니다.

찾아보니 현재 사용중인 extras-security6은 보약 취약점을 보완한 버전이라 해당 메서드가 적용이 되지않는 문제가 있었습니다.

implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'

extras-security5 버전으로 변경 시

implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'

Untitled

정상적으로 적용이 되는 모습을 확인할 수 있었습니다.

현재는 extras-security5 버전으로 대체하여 사용하도록 하고 이후 extras-security6 버전에서 해당 메서드를 사용하는 방법에 대해서 알아봐야겠습니다.