环回 - 在对象级别设置ACL

时间:2016-02-11 14:09:50

标签: javascript acl loopbackjs strongloop

我已成功添加" Class" -level ACL,仅允许授权用户访问我的模型:

URL GOTO=javascript:{window.document.getElementsByName("destination")[0].outerHTML='<input<SP>name="destination"<SP>type="text"></input>';undefined;}

这很棒,但我的应用程序需要更低级别的ACL - 对象级别。

当属于角色的用户创建新对象时,该对象只能由具有相同角色的其他用户访问。

这是解决Loopback问题的方法,还是提供不同的方式?

提前致谢, 的Jesper。

2 个答案:

答案 0 :(得分:0)

我认为您可能需要使用自定义role resolver来实现此功能。我们的想法是创建一个角色和一个自定义解析器,并确定用户在运行时对给定模型的访问权限。这是一个部分示例(请注意,您需要创建角色,以及成员等)。

// perhaps in a boot script?
app.models.Role.registerResolver('teamMember', function(role, context, cb) {
  if (context.modelName === 'ModelObj') {
    context.model.findById(context.modelId, function(err, instance) {
      if (err) { /* handle it... */ return cb(err); }
      // check the instance for something to determine access
      // execute callback with switch for access (or not)
      cb(null, true);
    }
  }
});

答案 1 :(得分:0)

本周我开始使用loopback mixin来支持对象级别的acls。我们需要在实例级别上使用动态acls,这可能随时间而变化。我们看到了你的问题并搜索了一些插件/ mixin /中间件,有人可以支持这个,但我们一无所获。

如果您对此仍然感兴趣,我将非常乐意收到您的反馈意见,因为我希望将此mixin用于任何地方,而不仅仅是我们的产品。

我的计划是本周有第一个版本。从星期一开始,我在对象级别上创建了一个简单的同步acl库。后来我添加了对loopback-mixin的支持,并支持可以获取数据以进行决策的解析器。我想添加一层“糖”的支持,其中一个简单的属性可以制作acls。因此,如果你有一个带有财产&#34; stock&#34;的模型,没有人可以调用方法&#39;购买&#39;如果库存少于1。

谢谢!