使用 Spring Security 为非授权用户隐藏数据表中的按钮
Posted
技术标签:
【中文标题】使用 Spring Security 为非授权用户隐藏数据表中的按钮【英文标题】:Hide buttons in Datables for non-authorized users with Spring Security 【发布时间】:2016-12-30 10:21:48 【问题描述】:我需要在 Datables 中为非授权用户隐藏按钮。
在普通的 jsp 中,我使用 spring 安全标签来隐藏非授权用户的元素。
例如隐藏删除按钮:
<sec:authorize access="hasRole('ROLE_ADMIN')"> <a href="delete/$author.id">Delete</a></sec:authorize>
但在 jquery 数据表中,按钮来自内部 javascript 配置。而且我不能使用弹簧安全标签。 例如。 DataTables 中的删除按钮:
"buttons": [
text: "Delete",
action: function (e, dt, button, config)
//button onClick here
]
【问题讨论】:
如果可以将授权状态获取到JavaScript变量中,则可以根据该变量设置buttons
。我不知道任何 JSP 或 Spring。
@thirtydot,是的,我可以在 js 中获取授权变量,但接下来我应该做什么?如何在 Datatables 中检查此变量?
【参考方案1】:
这是一个例子:
var authStatus = true; //your auth status variable from JSP
var buttons = [];
if (authStatus)
buttons = [
text: "Delete",
action: function(e, dt, button, config)
//button onClick here
];
$('#example').DataTable(
dom: 'Bfrtip',
buttons: buttons,
);
您可以改为使用三元运算符内联编写它,但不会那么清楚。
【讨论】:
以上是关于使用 Spring Security 为非授权用户隐藏数据表中的按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Security 处理基于用户权限的授权?
如何使用 Spring Security 在代码中获取用户的授权凭据?
如何使用 Spring MVC 和 Spring Security 更新有关授权用户的信息并将其保存在数据库中