我在mysql数据库中维护我的ACL数据(我模型的ACL列表)。我对远程方法(“属性”列)所起的作用很好。

对于某些模型,我必须拒绝访问模型的所有远程方法。对于这些用例,在表中该模型的属性列中我应该提到什么?

通常情况下,如果我们在其json中维护模型的ACL,并且如果我们需要拒绝对该特定模型的所有远程方法访问,那么我们只需要提及“属性”值即可。它将拒绝所有远程方法的访问。

拒绝所有远程方法:

{
  "accessType": "*",
  "principalType": "ROLE",
  "principalId": "$unauthenticated",
  "permission": "DENY"
}


拒绝特定的远程方法“ getDistrict”:

{
  "accessType": "READ",
  "principalType": "ROLE",
  "principalId": "$unauthenticated",
  "permission": "DENY",
  "property": "getDistrict"
}


但是,对于数据库表,如果我需要拒绝访问模型的所有远程方法,我必须在属性列中提到什么? ('ALL''*'left blank吗?)

另外,如果我在任何地方都错了,请纠正我。

谢谢

最佳答案

https://loopback.io/doc/en/lb3/Controlling-data-access.html#user-access-types


  对于其他方法,默认访问类型为EXECUTE;默认访问类型为EXECUTE。
  
  例如,自定义方法映射到EXECUTE访问类型。


因此,拒绝使用所有远程方法

{
  "accessType": "EXECUTE",
  "principalType": "ROLE",
  "principalId": "$everyone",
  "permission": "DENY"
}


编辑:要真正回答问题,您不存储任何内容,因为accessType: "EXECUTE"涵盖了所有自定义远程方法。

acl source中的这一行表明他们不对属性进行通配符匹配

var isMatchingMethodName = props[i] === 'property' &&
        req.methodNames.indexOf(ruleValue) !== -1;

关于mysql - 回送-ACL-DB表中的“属性”默认值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49406722/

10-16 20:49
查看更多