2017-12-22 24 views
0

메소드 보안 표현식을 저장하는 데 사용되는 클래스가 있습니다.Thymeleaf`sec : authorize` 속성에서 Spring EL 식을 사용하는 방법

public final class MethodSecurityExpressions { 
    public static final String USER = "hasRole('USER')"; 
} 
내가 이런 식으로 사용했습니다 컨트롤러에서

, Thymeleaf 템플릿에서

@PreAuthorize(MethodSecurityExpressions.USER) 
@GetMapping("path/to/list") 
public String list(Model model) { 
    return "list"; 
} 

나는 현재 다음하고있어,

<ul sec:authorize="hasRole('USER')"> 
    <li>...</li> 
</ul> 

그러나 나는 이런 일을하고 싶지 ,

<ul sec:authorize="#{MethodSecurityExpressions.USER}"> 
    <li>...</li> 
</ul> 

봄 부팅 1.5.8. 나는 JSP tag library documentationThymeleaf documentation을 읽고 모든 것을 조사했지만 유망한 것을 찾지 못했습니다.

가능하다면 누구에게 알리거나 이와 유사한 방법을 알고 있습니까?

답변

1

sec:authorize 속성은 스프링 보안 표현식을 평가합니다. 이 표현식은 사실 SpringSecurity 특정 루트 객체에서 평가되는 Spring EL 표현식입니다.

<div sec:authorize="${hasRole('#{T(org.example.MethodSecurityExpressions).USER)}'"> 
</div> 

클래스 MethodSecurityExpression

package org.example; 

public final class MethodSecurityExpressions { 
    public static final String USER = "USER"; 
} 

출처 : : 따라서 적절한 솔루션 등을 볼 수 있었다

https://github.com/thymeleaf/thymeleaf-extras-springsecurity https://docs.spring.io/spring/docs/4.3.12.RELEASE/spring-framework-reference/html/expressions.html