环回DENY在Acl中不起作用

时间:2016-07-18 12:44:41

标签: acl strongloop loopback

我是环回的新手。我为所有用户创建了ACL拒绝权限($ everyone)。但我可以通过swagger访问所有API。任何人都可以解释这个吗? 以下是我的ACL。感谢。

"acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    }
]

4 个答案:

答案 0 :(得分:6)

可能的原因:

enable access control,您必须致电enableAuth()。例如,在引导脚本server/boot/authentication.js中:

module.exports = function enableAuthentication(server) {
  server.enableAuth();
};

另请检查您的server/model-config.json文件,看看您的ACLRoleMappingRole型号是否与您的数据源正确关联。

您的ACL是正确的,因此问题出在其他地方。如果我的回答对您没有帮助,您可能想要克隆loopback-example-access-control repository,尝试它是否适合您并最终尝试弄清楚它与您的解决方案有何不同。

您还可以通过为控制台指定值为DEBUG的{​​{1}}环境变量来尝试debug,以便记录查找并检查服务器在请求进入时的效果。

答案 1 :(得分:1)

尝试删除accessType,如下所示:

{
  "principalType": "ROLE",
  "principalId": "$everyone",
  "permission": "DENY"
}

否则,最好的办法是克隆LoopBack-sandbox并在该存储库中重现该问题并在GitHub上发布问题。

答案 2 :(得分:0)

尝试将accessType字段值从EXECUTE更改为*

答案 3 :(得分:0)

It also depending on your base model, as it might get overwritten by the base model's ACL.

For example, if your model is a User base model, the "create" method will still work even if you put DENY to $everyone, unless you specify "property": ["create"].

"acls": [
    {
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY",
      "property": [
        "create"
      ]
    }
]

Reference (List of User base ACLs): https://github.com/strongloop/loopback/blob/master/common/models/user.json