如果我有一个 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/