Thymelaf hasRole在JavaScript中可见

时间:2019-12-10 13:52:41

标签: jquery spring-boot spring-security thymeleaf

我有一个使用SpringBoot + Thymeleaf + jQuery的项目。我想检查我的JavaScript中已认证用户的角色。根据角色,将使用jQuery渲染一块新的百里香叶。我已经在HTML中找到了这个

 <sec:authorize="hasRole('ROLE_ADMIN')" var="hasRoleAdmin"></sec:authorize>

然后应该在我的JS中看到hasRoleAdmin变量,所以我可以这样做:

function renderButton(){

 var btn="";

 if('${hasRoleAdmin}' == true){
       btn = "<button id='saveButton'>Save</button>";
 }else{
      btn = "<button id='viewButton'>View</button>";
 }

$("#root").append(btn);

}

我的第一个想法是使用jQuery渲染百里香叶

btn = <span sec:authorize=hasRole('ROLE_ADMIN')><button id='saveButton'>Save</button></span> 
$("#root").append(btn);

但是这两个都起作用。如何检查JavaScript中的Spring安全角色?我没有使用内联JS,所有源都是单独的文件。这是一个如何在JSP中执行此操作的示例。

springsecurity role check inside javascript

1 个答案:

答案 0 :(得分:0)

要在javascript中使用百里香,您可以将表达式封装在[[...]]中。

现在有关您的角色问题。我相信你可以做类似的事情

if([[${#authorization.expression('hasRole(''ROLE_WHATEVER'')')}]]){
   ...
}

该表达式应该向客户端发送true或false。还要注意,#authorization.expression的语法可能取决于您所使用的thymeleaf库的版本。我可以保证它可以在thymeleaf-extras-springsecurity4版本3.0.4.RELEASE中使用。