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