使用 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 更新有关授权用户的信息并将其保存在数据库中

使用spring security的基于角色的授权

基于角色的授权:使用 OneLogin 和 Spring Security 的 Oauth

CAS Spring Security Java - 未使用用户详细信息授权服务未加载角色