Loopback 中的细粒度权限

Fine grained permissions in Loopback

我正在为 REST 使用 Loopback API 并且正在尝试配置更细粒度的权限,而不仅仅是将用户分配到应用程序范围的组。这样的事情是我对客户端的想法:

用户:鲍勃 ID:123

MODEL    |   READ | WRITE | EXECUTE
-----------------------------------
Projects |    Y   |   Y    |   N
Changes  |    N   |   N    |   N
Companies|    Y   |   Y    |   Y
ThingOne |    Y   |   N    |   N
ThingTwo |    Y   |   Y    |   N

管理员可以在其中切换单个用户对单个模型的权限。

我尝试过的一个想法是为每个模型添加单独的 ACL 组,即模型 Projects

"acls": [
{
  "accessType": "*",
  "principalType": "ROLE",
  "principalId": "$everyone",
  "permission": "DENY",
  "property": "find"
},
{
  "accessType": "READ",
  "principalType": "ROLE",
  "principalId": "projects-read-access",
  "permission": "ALLOW",
  "property": "find"
},
{
  "accessType": "WRITE",
  "principalType": "ROLE",
  "principalId": "projects-write-access",
  "permission": "ALLOW",
  "property": "find"
},
{
  "accessType": "EXECUTE",
  "principalType": "ROLE",
  "principalId": "projects-execute-access",
  "permission": "ALLOW",
  "property": "find"
}
],

然后用RoleMapping来匹配Roles,但是这样看起来不对而且麻烦。任何有关解决此问题的最佳方法的建议都值得赞赏, 谢谢

因为管理员可以切换单个用户对单个模型的权限,所以您需要一个数据库 table 来存储用户的权限。然后,您可以创建一个检查正确权限的动态角色:http://loopback.io/doc/en/lb3/Defining-and-using-roles.html#dynamic-roles