在我的环回应用中,我有两个模型:user
和thing
。
基本上thing
属于user
,只有所有者才能访问thing
。这就是我的thing.json
文件的样子:
{
"name": "thing",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": "userId",
"primaryKey": "id"
}
},
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$unauthenticated",
"permission": "DENY"
}
],
"methods": {}
}
正在发生的事情是,如果我在允许某些角色之前拒绝像我现在所做的每个人,则不允许任何人访问或创建内容,但如果我删除该行,则所有用户都可以访问所有内容。我错过了什么?我希望所有者能够访问他们自己的东西。
谢谢!
答案 0 :(得分:2)
来自Loopback documentation
要限定$ owner,目标模型需要与User模型(或扩展User的模型)以及与目标模型实例的外键匹配的属性具有belongsTo关系。 $ owner的检查仅针对路径上具有':id'的远程方法执行,例如,GET / api / users /:id。