Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript客户端应用程序中的权限/ACL_Javascript_Backbone.js_Permissions_Acl_Marionette - Fatal编程技术网

JavaScript客户端应用程序中的权限/ACL

JavaScript客户端应用程序中的权限/ACL,javascript,backbone.js,permissions,acl,marionette,Javascript,Backbone.js,Permissions,Acl,Marionette,如果我有一个JavaScript前端应用程序,那么处理权限/ACL的最佳/常见做法是什么。例如,我想显示/隐藏一些元素等。当然,它不安全,但仍在视图层上,我如何控制它 我使用BackboneJS(带木偶)作为客户端框架,因此使用jQuery、下划线等 我想在高层,我可以尝试以某种方式禁用一些路线。需要一些研究,但我可以做Router.on(“route”,checkPermissions) 然后在视图层上,要隐藏/显示元素。。。仍然不确定如何最好地处理这个问题。我需要将一些权限对象传递到模型中

如果我有一个JavaScript前端应用程序,那么处理权限/ACL的最佳/常见做法是什么。例如,我想显示/隐藏一些元素等。当然,它不安全,但仍在视图层上,我如何控制它

我使用BackboneJS(带木偶)作为客户端框架,因此使用jQuery、下划线等

我想在高层,我可以尝试以某种方式禁用一些路线。需要一些研究,但我可以做
Router.on(“route”,checkPermissions)


然后在视图层上,要隐藏/显示元素。。。仍然不确定如何最好地处理这个问题。我需要将一些权限对象传递到模型中

为了使元素在屏幕上隐藏/可见,我在模板中进行内联检查,类似于:

<% if (user.isInRole('ADMIN', 'MNGR')) { %>
    <li <% page == "store" ? print('class="active"') :'' %>>
    </li>
<% } %>
我认为这足够安全,因为对所需权限的实际检查再次发生在服务器端。通过隐藏一些控件,我只是在引导用户浏览应用程序,而不是让用户对操作感到困惑,因为他/她没有所需的权限


使用这种方法,我永远不会隐藏通过REST服务动态传递的数据,而只是页面的静态元素。

我将使用修改的解析逻辑创建自定义
BaseModel
/
BaseCollection
类,以从数据层删除不可访问的属性。稍后,您将能够透明地将此数据隐藏逻辑传输到服务器端,并获得值得生产的安全性

对于权限数据,模型/集合类上的
\u security
属性是声明它的好地方


在视图中,使用akoskm建议的条件逻辑

在客户端解析敏感数据属性是个坏主意。如果用户没有查看敏感数据的权限,则敏感数据甚至不应离开服务器。
isInRole: function (rr) {
    var self = this;
    $.each(rr, function(i) {
        if (rr[i] === self.currentRole) {
            alert('pass');
        }
    });
}