2013-03-22 37 views
1

我正在开发一个基于CRUD的数据库,它需要有一些基于用户的ACL(访问控制列表)。我们希望这样做,以便有一个管理员访问面板,所以我们可以根据需要快速删除内容或以其他方式缓和内容。我试图保持它的灵活性,以便它可以是一个单独的界面以方便使用,但也不会偏离一般用户界面,否则将难以维护。Backbone.js:Admin Interface

假设后端将处理ACL,什么是在前端处理创建用户界面的好方法?是否有必要创建一个单独的BB.js接口来提供服务,或者是否可以将一些额外的代码传递给所有将被忽略的用户?

建议或警告,将不胜感激!

回答

0

我解释了你的问题,因为你想为不同的访问级别的用户提供不同的接口。因此,我想:

  1. 把一张支票的用户访问他们打的每个路由,以确保它们不会访问网页之前,他们不应该看到

  2. 他们仍然可以尝试绕过这个(因为他们可以更改他们的用户模型),您的后端仍然会捕获任何未经授权的请求。

  3. 您还可以根据用户访问级别有条件地显示和隐藏页面元素。

继承人我ACL.coffee的示例代码

acl = {} 

acl['admin'] = [ 
    'page1', 
    'page2', 
    'page3', 
    'page4', 
    'page5' 
] 

acl['user'] = [ 
    'page1', 
    'page2', 
    'page3' 
] 

hasAccess = (route) -> 
    # Get User Model 
    user = window.App.user 
    # Get Associated ACL 
    permissions = acl[user.get('role')] 
    # Check each URL for Access Privileges 
    # Returns false if route not in array 
    permissions.some (r) -> ~route.indexOf r 

{hasAccess}