반응형

페이지에서 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 링크입니다

 

Maven Repository: org.thymeleaf.extras » thymeleaf-extras-springsecurity4 » 3.0.4.RELEASE

 

mvnrepository.com

현재 프레임워크랑 맞는 버전으로 추가를 하면 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

+ Recent posts