仅限环回$所有者

时间:2016-08-28 19:40:23

标签: strongloop loopback

我有一个环回应用程序,每个客户都可以拥有自己的服务。因此,我需要客户只能查看,添加,编辑和删除它自己的服务。但无论我做什么,似乎客户既可以看到所有用户的所有服务,也可以看不到任何人的服务。

服务模式

"relations": {
  "customer": {
    "type": "belongsTo",
    "model": "customer",
    "foreignKey": "customerId"
  }
}

我看到了alc:

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

但是,如果它就像这个服务的所有者而且只有/ GET / {id}它的服务,但它不能/获取所有服务?!?

如果我使用它:

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

我得到了我需要的东西,但这是市长安全漏洞,因为每个客户都可以从所有其他客户那里获得所有服务。

1 个答案:

答案 0 :(得分:2)

您需要在customerId模型中添加属性service$owner acl仅在api url中存在:id段时才有效。

如果您的网址没有:id,则可以创建自定义角色解析程序。