2014-12-02 68 views
3

我正在尝试使用npm模块Acl来实现ACL系统。主页可以在这里找到:https://github.com/OptimalBits/node_aclNode Acl动态链接

该文档显示了许多非常简单的示例以提供角色访问权限。特别是,有一个很好的一段代码在这里:

acl.allow([ 
    { 
     roles:['guest','member'], 
     allows:[ 
      {resources:'blogs', permissions:'get'}, 
      {resources:['forums','news'], permissions:['get','put','delete']} 
     ] 
    }, 
    { 
     roles:['gold','silver'], 
     allows:[ 
      {resources:'cash', permissions:['sell','exchange']}, 
      {resources:['account','deposit'], permissions:['put','delete']} 
     ] 
    } 
]) 

不幸的是,该文档不显示像一个更复杂的URL的任何实例“/博客/:ID /今天”。是否可以为这些动态URL设置acls?

而且,我还需要指定只有某些用户才能获得他们自己的信息。这意味着'users /:id'只能在用户的id与url相同的情况下才能使用。这可能吗?

回答

0

他们的文档涵盖了这一点,除非我失去了一些东西。从他们的自述文件中获取:

该中间件接受3个可选参数,这在一些 情况下很有用。例如,有时我们不能考虑整个URL作为 资源:

app.put('/blogs/:id/comments/:commentId', acl.middleware(3), function(req, res, next){…} 

在这种情况下,资源将是刚刚的 URL中的三个第一组件(没有结束斜线)。

也可以添加自定义的用户id或检查比的方法以外 权限:

app.put('/blogs/:id/comments/:commentId', acl.middleware(3, 'joed', 'post'), function(req, res, next){…} 
+2

所以这部分指的是当我们正在检查一个给定的用户如何更改中间件。但是,我试图找出如何让joed的角色允许'/ blogs /:id'。首先,我不清楚这个角色是如何建立起来的 – ritmatter 2014-12-02 04:57:16