StrongLoop:子表的ACL
我有两个表A
和B
A
hasOne B
, B
belongsTo A
现在我在B
有以下ACL:
{ "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY", "accessType": "*" }
当我向localhost/api/B/{id}
发出请求时,我收到401。
当我向localhost/api/A/{id}/B
发出请求时,我收到数据。
我怎样才能解决这个问题? 两者都应该得到一个401错误。 有没有一个解决scheme,我不必碰A.json
?
我可以在A
修复一个问题,但是我觉得这样会很难看。
在StrongLoop Doc中find一些东西,这意味着我必须在A
定义ACL?
在当前版本的环回是这种情况。 你可以在github问题中find不同的引用https://github.com/strongloop/loopback/issues/960 https://github.com/strongloop/loopback-example-access-control/issues/41
您链接的文档实际上有相反的问题的明确警告,通过用户连接时获取相关的实例。
如果模型具有DENY ALL权限(例如内置模型(如User模型)),但相关模型没有ACL,则相关模型仍然无法通过User模型访问。 因此,例如,即使书本模型的默认ACL是GET / books的ALLOW $ authenticate,路由GET / user / {id} / books默认仍然是DENY ALL。
看起来您还需要明确授予或不授予权限,对于您希望修改的每个生成的方法这样做。 具有hasAndBelongsToMany的用户的示例:
{ "accessType": "READ", "principalType": "ROLE", "principalId": "$authenticated", "permission": "ALLOW", "property": "__get__skills" }, { "accessType": "WRITE", "principalType": "ROLE", "principalId": "$owner", "permission": "ALLOW", "property": "__link__skills" }, { "accessType": "WRITE", "principalType": "ROLE", "principalId": "$owner", "permission": "ALLOW", "property": "__unlink__skills" }
我记得看到,处理ACL影响相关模型的新方法将在版本3中实现,但我无法再次find引用。