仅限环回 $owner

Loopback $owner only

我有一个环回应用程序,每个客户都可以拥有自己的服务。因此,我需要客户只能看到、添加、编辑和删除它自己的服务。但是不管我怎么弄,好像客户要么可以看到所有用户的所有服务,要么没有人可以看到任何人的服务。

服务模式

"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}是服务,却不能/GET所有的服务?!?

如果我使用这个:

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

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

您需要在 service 模型中添加 属性 customerId 并且 $owner acl 只有在 :id 段存在于 api url.

如果您的 url 没有任何 :id 您可以创建自定义角色解析器。