jquery - Thymelaf hasRole 在 JavaScript 中可见
问题描述
我有一个带有 SpringBoot+Thymeleaf+jQuery 的项目。我想在我的 JavaScript 中检查经过身份验证的用户的角色。基于角色,将使用 jQuery 渲染一段新的 thymeleaf。我在 HTML 中有这个:
<sec:authorize="hasRole('ROLE_ADMIN')" var="hasRoleAdmin"></sec:authorize>
然后 hasRoleAdmin 变量应该在我的 JS 中是可见的,所以我可以这样做:
function renderButton(){
var btn="";
if('${hasRoleAdmin}' == true){
btn = "<button id='saveButton'>Save</button>";
}else{
btn = "<button id='viewButton'>View</button>";
}
$("#root").append(btn);
}
我的第一个想法是像使用 jQuery 一样渲染 thymeleaf
btn = <span sec:authorize=hasRole('ROLE_ADMIN')><button id='saveButton'>Save</button></span>
$("#root").append(btn);
但这两者中的任何一个都有效。如何检查 JavaScript 中的 spring 安全角色?我没有使用内联 JS,所有源都是单独的文件。在 JSP 中有一个如何做到这一点的例子。
解决方案
要在 javascript 中使用 thymeleaf,您可以将表达式封装在[[...]]
.
现在关于你的角色问题。我相信你可以做类似的事情
if([[${#authorization.expression('hasRole("ROLE_WHATEVER")')}]]){
...
}
表达式应该在那里发送客户端 true 或 false。另请注意,#authorization.expression 的语法可能取决于您使用的 thymeleaf 库的版本;我可以保证它在 thymeleaf-extras-springsecurity4 版本 3.0.4.RELEASE 中有效。
推荐阅读
- python - 如何从我的 Python 文件中更新 Qml 对象的属性?
- java - 将整数输入二维数组的最有效方法是什么?
- html - 如何限制表格单元格的宽度并隐藏溢出的内容
- sql-server - SSRS 矩阵标题被截断
- php - 谷歌地方 JSON 解析
- java - 声纳使用 try-with-resources 或在“finally”子句 java8 流中关闭此“流”
- javascript - Google Maps API 不显示我的标记
- javascript - Onsubmit 不调用函数
- r - 使用 Rblpapi 从 bsrch 获取数据的问题
- java - Tapestry 页面和 API