我有一个拥有房子的用户(几个用户可以拥有房子),房子可以有几个家具。
CustomUser.json关系:
"houses": {
"type": "hasAndBelongsToMany",
"model": "House",
"foreignKey": "houseId"
}
House.json关系:
"furnitures": {
"type": "hasAndBelongsToMany",
"model": "Furniture",
"foreignKey": ""
},
"customUsers": {
"type": "hasAndBelongsToMany",
"model": "CustomUser",
"foreignKey": ""
}
我的ACL很简单,对于House和Furniture来说都是这样的:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "admin",
"permission": "ALLOW"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
}
]
现在,为用户访问房屋工作正常,但用户因为属于房屋(房屋是房主)而未能列出他们的家具。我如何以最简单的方式解决这个问题?最好是以某种方式定义用户通过房子拥有家具?家具必须属于房子(因为多个用户可以有房子)。
答案 0 :(得分:1)
所以我通过另一个名为" loopback-component-access-groups"它允许您定义组。在这个特殊情况下,我将House模型设为用户和家具可以访问的组。用户可以拥有不同的角色,因此我只设置用户(具有角色"成员")可以访问同一组(房屋)中的家具。这个解决方案对我有用,但我不完全确定如果它们与家具相关,是否还有其他对象继承它们属于房屋。
答案 1 :(得分:0)
编写我自己的角色解析器使得它非常灵活,在角色解析器中我必须制作逻辑以找到原始父级并确保没有死关系(因为LB还没有支持级联)。
我建议从此开始:
https://loopback.io/doc/en/lb3/Defining-and-using-roles.html