环回 acl 和 ownerid

Loopback acl and ownerid

我对 ACL 在环回上的工作方式有点怀疑。

我正在关注示例 https://github.com/strongloop/loopback-example-access-control

REST Api 允许创建调用将 ownerid 作为参数传递,但不进行任何验证。

因此,经过身份验证的用户可以创建一个项目并将 ownerid 设置为任何值。我认为 属性 应该只允许由管理员角色设置。

我知道我可以输入一些代码来进行验证。但我认为必须根据当前登录的用户自动设置该值。我错了还是遗漏了什么?

谢谢!

我花了很多时间才发现这个。虽然看起来 belongsTo 和 hasMany 内置的 persistedModel 和 UserModel 之间的关系必须自动设置 ownerId 但这可能是一个设计问题。

因此,为了实现您的目标,您必须在访问令牌参数的每个远程请求之前设置 ownerId,如下所示:

Model.beforeRemote('create', function(context, model, next) {
    var req = context.req;
    req.body.ownerId = req.accessToken.userId;
    next();
});

然后从您的 api 中隐藏 ownerId 属性。

编辑:


如果您想自动设置 ownerId,请参阅 了解更多详情。