用户模型的环回ACL

我正在使用loopback为SPA网站创build一个简单的API。 我想保持我的权限尽可能简单,所以我结束了以下ACL模型

  • 所有的权限都被默认拒绝
  • 一些模式中的一些方法被允许给每个人
  • 任何授权用户都可以使用所有方法

这将显然工作,如果我将创build几个用户,没有人将能够创build或修改用户了。 由于我无法显式更改内置User模型的权限,因此我创build了一个admin模型,扩展了User 。 然后,我将User模型的public属性设置为false。 我设置了以下ACL规则

 { "accessType": "*", "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY" }, { "accessType": "EXECUTE", "principalType": "ROLE", "principalId": "$everyone", "permission": "ALLOW", "property": "login" }, { "accessType": "*", "principalType": "ROLE", "principalId": "$authenticated", "permission": "ALLOW" } 

正如我所看到的,它应该拒绝任何无法访问的用户访问login以外的任何方法。

不幸的是,这不是如何工作,任何人仍然可以POST /用户和创build新的用户。 我的猜测是ACL规则不适用于inheritance模型,因此在这里应用User规则。 所以我回到原点,我不能直接更改User权限或覆盖它们。

我在这里有什么select? 有没有办法阻止创build新用户?

事实certificate,规则的具体问题不仅仅是inheritance水平。 在这种情况下, User模型专门为create属性定义了一个规则。 即使拒绝规则是在扩展的admin模型中定义的,该规则也会优先于更一般的拒绝每个属性。 所以我必须从User模型中获取所有允许的规则,并在admin明确地拒绝它们。