我对ACL如何在环回上工作有点怀疑。
我正在关注示例https://github.com/strongloop/loopback-example-access-control
REST Api允许create调用将ownerid作为参数传递,但不进行任何验证。
因此,经过身份验证的用户可以创建项目并将ownerid设置为任何值。我认为只应允许管理员角色设置属性。
我知道我可以放一些代码来进行验证..但我相信必须根据当前登录的用户自动设置值。我错了或者我错过了什么?
谢谢!
答案 0 :(得分:5)
我花了很多时间才发现这一点。虽然看起来属于并且内置的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了解详情。