반응형
페이지에서 Spring Security를 사용하여 권한별 구조를 바꾸려고 하는 데 사용했던 소스를 적용을 시켰는데 동작을 안 하여 이것저것 살펴봤더니 Config 쪽에 적용이 안 된 부분이 있어 적용을 하였습니다.
<div sec:authorize="hasRole('ROLE_ADMIN')">
관리자
</div>
@Bean(name = "templateEngine")
public SpringTemplateEngine getTemplateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
Set<ITemplateResolver> templatesResolvers = new HashSet<>();
templatesResolvers.add(getTemplateResolver());
templateEngine.addDialect(new LayoutDialect());
templateEngine.setTemplateResolvers(templatesResolvers);
templateEngine.addDialect(new SpringSecurityDialect());
return templateEngine;
}
SpringSecurityDialect 클래스를 추가를 해야합니다
Class를 못 찾으면 "Thymeleaf Extras Springsecurity4" Package가 추가안되어있을거에요
Thymeleaf Extras Springsecurity4 Maven 링크입니다
현재 프레임워크랑 맞는 버전으로 추가를 하면 SpringSecurityDialect Class가 Import 될 거예요
<html lang="ko" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{templates/default-layout}" xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
xmlns:sec="http://www.thymeleaf.org/extras/spring-security" 네임스페이스 추가하세요
그럼 이제 상단에 적용하려고 했던 소스코드가 동작되는 거 확인되실 거예요.
sec태그 말고 다른방법으로는 아래 방법도 있어요
<div th:if="${#authorization.expression('hasRole(''ROLE_ADMIN'')') ? true : false}">
관리자
</div>
ROLE을 여러개 적용할경우
<div th:if="${#authorization.expression('hasAnyRole(''ROLE_ADMIN'',''ROLE_ADMIN2'')') ? true : false}">
관리자
</div>
그럼 Thymeleaf spring security 태그 적용시켜봤어요
반응형
'개발 > Web' 카테고리의 다른 글
카카오톡 인앱브라우저 닫기 (1) | 2024.03.25 |
---|---|
Thymeleaf each value sum (2) | 2020.12.15 |
Thymeleaf Layout구성 (2) | 2020.12.06 |
Thymeleaf 문법 (2) | 2020.12.01 |