StrongLoop:子表的ACL

我有两个表AB A hasOne BB 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引用。