Spring Security에서 자체적으로 지원하는 기능으로 로그인 여부, 권한 별로 다르게 처리하는 것을 서버단뿐만 아니라 프론트단에서도 할 수 있다.
SecurityContextHolder.getContext().getAuthentication()
으로 인증정보를 가져오는 것이다.
만약 비로그인 회원이라면 스프링에서Anonymous Authentication Token
을 가져와 비로그인 회원임을 확인한다.
그런데 타임리프 사용중 sec:authorize="isAnonymous()"
이 코드가 작동하지 않았다.
알고보니 HTML 상단 태그 xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
에 이렇게 xmlns:sec 속성 값을 명시해주지 않아서 기능이 작동하지 않았던 것이다.
<!doctype html>
<html
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
**xmlns:sec="http://www.thymeleaf.org/extras/spring-security"** // here
xmlns:th="http://thymeleaf.org"
layout:decorate="~{fragment/layout}"
>
<head>
이렇게 추가하고 나니 제대로 작동했다.
괜히 세션이나 쿠키 문제인 줄 알고 그것만 잡고 늘어졌는데.. 태그 속성값 명시하지 않은 이유 때문이었다니. . .