我在mysql数据库中维护我的ACL数据(我的模型的ACL列表)。它可以很好地使用我提到的远程方法的角色(属性列)。
对于某些模型,我必须拒绝对模型的所有远程方法的访问。对于这些用例,我应该在表中模型的属性列中提到什么?
通常情况下,如果我们在其json中维护模型的ACL,并且如果我们需要拒绝该特定模型的所有远程方法访问,那么我们不需要提及“property”值。它将拒绝所有远程方法的访问。
拒绝所有远程方法:
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$unauthenticated",
"permission": "DENY"
}
拒绝特定的远程方法‘Denying’:
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$unauthenticated",
"permission": "DENY",
"property": "getDistrict"
}
然而,在数据库表的情况下,如果我需要拒绝对模型的所有远程方法的访问,我必须在属性列中提到什么?('ALL'
,或'*'
或left blank
?)
另外,如果我哪里错了,请纠正我。
谢谢
发布于 2018-03-21 21:51:23
https://loopback.io/doc/en/lb3/Controlling-data-access.html#user-access-types
对于其他方法,默认访问类型为EXECUTE;
例如,自定义方法映射到EXECUTE访问类型。
因此,要拒绝使用所有远程方法
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
}
编辑:为了实际回答这个问题,您没有存储任何内容,因为accessType: "EXECUTE"
涵盖了所有自定义远程方法。
acl source中的这一行表明他们不对属性进行通配符匹配
var isMatchingMethodName = props[i] === 'property' &&
req.methodNames.indexOf(ruleValue) !== -1;
https://stackoverflow.com/questions/49406722
复制相似问题