首页 文章

如何使用Loopback ACL模型/表?

提问于
浏览
0

我正在尝试为我的其余API设置访问控制 . Loopback为处理基于用户/角色/主体的访问提供了一个很好的起点 .

但是,如果我想要的不仅仅是提供的东西,例如,模型实例的多个所有者?是否可以在ACL表中添加条目?或者我应该创建一个新的角色/解析器,如果是这样,我可以/应该重用现有的ACL模型/表或滚动我自己的?

Loopback很棒,但是文档缺乏深度,最终会让你阅读源代码 .

1 回答

  • 1

    在这种特殊情况下,我建议创建一个自定义角色解析器 .

    像这样的东西:

    Role.registerResolver('$inOwners', function (role, ctx, callback) {
      ctx.model.count({
        id: ctx.modelId,
    
        // This only works for mongo db...
        owners: ctx.accessToken.userId
      }, function(err, count) {
        if (err) {
          callback(err);
        } else if (count) {
          callback();
        } else {
          callback(new Error('Not Owner'));
        }
      });
    });
    

    然后你可以将它添加到acls中(在模型静态acls中,在json文件中,或者将其添加到ACL表中):

    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$inOwners",
      "permission": "ALLOW",
      "property": "*",
      "model": "*"
    }
    

    请记住,每当对环回方法的访问取决于文档/行内的内容时,您只能使用角色解析器为其定义ACL,否则您必须创建自己的ACL系统 .

相关问题