【问题标题】:Node Acl dynamic links节点 Acl 动态链接
【发布时间】:2014-12-02 04:28:54
【问题描述】:

我正在尝试使用 npm 模块 Acl 来实现 ACL 系统。主页可以在这里找到:https://github.com/OptimalBits/node_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 示例,例如“/blogs/:id/today”。是否可以为这些类型的动态 url 设置 acls?

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

【问题讨论】:

    标签: javascript node.js acl


    【解决方案1】:

    他们的文档确实涵盖了这一点,除非我遗漏了什么。摘自他们的自述文件:

    中间件接受 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){…}
    

    【讨论】:

    • 所以这部分是指当我们检查给定用户时如何更改中间件。但是,我试图弄清楚如何让 joed 的角色允许'/blogs/:id'。我不清楚 joed 的角色最初是如何设定的
    • @Paul,@ritmatter 我们可以为'blogs/:id' , 'blogs/:id/details/:commentID' 之类的网址授权,它们对于不同的用户 都有不同的授权 级别吗?
    • 鉴于这个问题现在已经有将近 6 年的历史了,而且您所问的问题在原始查询中没有涵盖,@ChaitanyaBabar 您可能想提出一个新问题
    • @Paul 当然我想我需要打开新的。如果您只让我知道是否可以使用节点 acl 处理给定 url 的上述情况,那就太好了?
    【解决方案2】:

    虽然文档确实说节点 acl 支持此处的动态 url。但是在查看源代码后我们没有找到任何支持访问动态 url 的参考。

    这里还有一个 open github issue https://github.com/OptimalBits/node_acl/issues/192 指向相同。

    虽然我们可以实现自己的中间件过滤器来支持动态 url,但我想它应该在节点 acl 库本身中修复。

    结论:- Node ACL 库不支持带参数的 url(即动态 url)。 但是如果我们仍然想使用 Node ACL 库来获取动态 url,可以使用来自 https://github.com/OptimalBits/node_acl/issues/192#issuecomment-226761840 的建议。

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多