我有一个使用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中执行此操作的示例。
答案 0 :(得分:0)
要在javascript中使用百里香,您可以将表达式封装在[[...]]
中。
现在有关您的角色问题。我相信你可以做类似的事情
if([[${#authorization.expression('hasRole(''ROLE_WHATEVER'')')}]]){
...
}
该表达式应该向客户端发送true或false。还要注意,#authorization.expression的语法可能取决于您所使用的thymeleaf库的版本。我可以保证它可以在thymeleaf-extras-springsecurity4版本3.0.4.RELEASE中使用。