Node Acl动态链接

问题描述 投票:3回答:2

我正在尝试使用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'。是否可以为此类动态网址设置ACL?

而且,我还需要指定仅某些用户可以获取自己的信息。这意味着'users /:id'仅在用户的id与URL的ID相同时才起作用。这可能吗?

javascript node.js acl
2个回答
0
投票

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

中间件接受3个可选参数,这在某些情况下很有用情况。例如,有时我们不能将整个网址视为资源:

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

在这种情况下,资源将只是网址(不带斜杠)。

也可以添加自定义userId或检查其他权限比方法:

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

0
投票

尽管文档确实说节点acl在这里支持动态网址。但是在查看源代码我们找不到之后,任何支持访问动态URL的参考。

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

尽管我们可以实现自己的中间件过滤器来支持动态url,但是我想应该将其固定在节点acl库本身中。

结论:-

节点ACL库不支持带参数的网址(即动态网址)。但是,如果我们仍然想将Node ACL库用于动态URL,则可以使用https://github.com/OptimalBits/node_acl/issues/192#issuecomment-226761840中的建议。
© www.soinside.com 2019 - 2024. All rights reserved.