Loopback:如何在 mixin 中定义 ACL 规则?

Loopback: How to define ACL rules in a mixin?

我想定义一组 ACL 规则,这些规则应该可以通过使用 mixins 轻松移植和扩展。

MyModel.json 中为某些模型 MyModel 定义这些是微不足道的:

"acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "DENY"
    }]

这行得通,并且可以正确阻止每个人的 API 调用。然而,当我在混合中做同样的事情(或者我认为)时,它不起作用:

module.exports = function (Model, options) {

  Model.getApp(function (err, app) {

    app.models.ACL.create({
      model: Model.modelName,
      accessType: '*',
      principalType: 'ROLE',
      principalId: '$everyone',
      permission: 'DENY'
    }, function (err, acl) {
      console.log('ACL entry created: %j', acl);
    });

  });

};

缺少什么?

通过源代码查看 Loopback 本身如何在配置时注册 ACL 后,以下似乎是在混合中执行此操作的正确方法:

module.exports = function (Model, options) {

  Model.settings.acls.push({
    "accessType": "*",
    "principalType": "ROLE",
    "principalId": "$everyone",
    "permission": "DENY"
  });

};