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
我正在为 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