我对acl如何在环回上工作有点怀疑。
我正在跟踪样本https://github.com/strongloop/loopback-example-access-control
rest api允许create调用将ownerid作为参数传递,但不进行任何验证。
例如,经过身份验证的用户可以创建一个项目并将ownerID设置为任何值。我认为属性只能由管理员角色设置。
我知道我可以放一些代码来做验证。但我相信这个值必须根据当前登录的用户自动设置。我错了还是我错过了什么?
谢谢您!
最佳答案
我花了这么多时间才发现这件事。虽然看起来内置的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,请参见this link了解更多详细信息。