我正在开发一个基于 CRUD 的数据库,它需要有一些基于用户的 ACL(访问控制列表)。我们想让它也有一个管理员访问面板,以便我们可以在需要时快速删除内容或以其他方式对其进行审核。我试图保持它的灵活性,以便为了方便起见它可以是一个单独的界面,但也不会偏离一般用户界面,否则它会更难维护。
假设后端将处理 ACL,那么在前端处理创建用户界面的好方法是什么?是否有必要创建一个单独的 BB.js 接口来提供服务,或者向所有将被忽略的用户传递一些额外的代码是否可以?
建议或警告也将不胜感激!
我正在开发一个基于 CRUD 的数据库,它需要有一些基于用户的 ACL(访问控制列表)。我们想让它也有一个管理员访问面板,以便我们可以在需要时快速删除内容或以其他方式对其进行审核。我试图保持它的灵活性,以便为了方便起见它可以是一个单独的界面,但也不会偏离一般用户界面,否则它会更难维护。
假设后端将处理 ACL,那么在前端处理创建用户界面的好方法是什么?是否有必要创建一个单独的 BB.js 接口来提供服务,或者向所有将被忽略的用户传递一些额外的代码是否可以?
建议或警告也将不胜感激!
我将您的问题解释为您想为不同访问级别的用户提供不同的界面。因此我会:
在用户访问每条路线之前检查他们的访问权限,以确保他们没有访问他们不应该看到的页面
他们仍然可以尝试规避这一点(因为他们可以更改他们的用户模型),您的后端仍然会捕获任何未经授权的请求。
您还可以根据用户访问级别有条件地显示和隐藏页面元素。
这是我的 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}