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

标签 javascript backbone.js permissions acl marionette

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

我使用 BackboneJS(与 Marionette)作为客户端框架,因此使用 jQuery、Underscore 等。

我在高层次上思考,我可以尝试以某种方式禁用一些路由。需要一些研究,但我可以做 Router.on("route", checkPermissions)

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

最佳答案

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

<% if (user.isInRole('ADMIN', 'MNGR')) { %>
    <li <% page == "store" ? print('class="active"') :'' %>>
    </li>
<% } %>

并在我的用户模型中添加了以下辅助函数来检查权限:

isInRole: function (rr) {
    var self = this;
    $.each(rr, function(i) {
        if (rr[i] === self.currentRole) {
            alert('pass');
        }
    });
}

我认为这是足够安全的,因为对所需权限的实际检查再次发生在服务器端。通过隐藏一些控件,我只是在引导用户完成应用程序,而不是让他因为他/她没有所需的权限而将他与操作混淆。

通过这种方法,我从不隐藏通过 REST 服务动态获取的数据,仅隐藏页面的静态元素。

关于javascript - JavaScript 客户端应用程序中的权限/ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119857/

相关文章:

javascript - 向下滚动时如何卡住表头及其上方的所有内容?

javascript - 如何根据数字范围可视化数据?

javascript - Backbone.js View 监听 jquery ui 事件

javascript - 将 Handlebars 集成到 Backbone Boilerplate 应用程序中

django - Errno 13 权限被拒绝 : media folder with localhost

windows - 从剪贴板读取时权限被拒绝

javascript - 使用 jQuery 获取表单元素的类型

javascript - 我想在 php、JS 或 Jquery 中获取相对于当前日期的上周日期

javascript - Backbone.js 集合选项

java - 应用程序无法访问外部 SD 卡(只读)