首页 文章

用户模型的环回ACL

提问于
浏览
2

我正在使用loopback为SPA网站创建一个简单的API . 我想让我的权限尽可能简单,所以我最终得到了以下ACL模型

  • 默认情况下拒绝所有权限

  • 允许每个人使用多个模型中的一些方法

  • 任何授权用户都允许使用所有方法

如果我将创建多个用户并且没有人能够再创建或修改用户,这显然会起作用 . 由于我无法显式更改内置 User 模型的权限,因此我创建了一个扩展 Useradmin 模型 . 然后我将 User model的 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 / users并创建新用户 . 我的猜测是ACL规则不适用于继承的模型,因此这里应用了 User 的规则 . 所以我'm back to square one, I can' t直接更改 User 权限或覆盖它们 .

我有什么选择?有没有办法阻止创建新用户?

1 回答

  • 2

    事实证明,规则细节比继承级别更重要 . 在这种情况下, User 模型专门为 create 属性定义规则 . 即使在扩展的 admin 模型中定义了拒绝规则,此规则也优先于更一般的拒绝每个属性 . 因此,我必须从 User 模型中获取所有允许的规则,并在 admin 中明确拒绝它们 .

相关问题