我目前正在评估loopback.io以开发新项目的API部分,而且我在设置正确的ACL条目时遇到问题。
我希望获得的是一个auth令牌,GET端点应该只返回用户拥有的对象。例如,对/ Shows?access_token = xxxxxx的请求应仅返回用户拥有的对象。
下面是我的shows.json文件,我的用户模型名为Podcaster。任何帮助将不胜感激。
{
"name": "Show",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"title": {
"type": "string",
"required": true
},
"description": {
"type": "string"
}
},
"validations": [],
"relations": {
"episodes": {
"type": "hasMany",
"model": "Episode",
"foreignKey": ""
},
"podcaster": {
"type": "belongsTo",
"model": "Podcaster",
"foreignKey": ""
}
},
"acls": [
{
"accessType": "WRITE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": "create"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
}
],
"methods": {}
}
答案 0 :(得分:1)
它与ACL无关。
您想要更改方法的业务逻辑。因此,最佳做法是创建一种新方法,以获取当前用户拥有的节目。
如果您想使用当前的owner
ACl,则需要在user
和show
之间创建关系,并在ownerId
中设置show
模型。
{
"name": "Show",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"title": {
"type": "string",
"required": true
},
"description": {
"type": "string"
},
"description": {
"type": "string"
}
"ownerId": {
"type": "object"
}
},
"validations": [],
"relations": {
"owner": {
"type": "belongsTo",
"model": "user",
"foreignKey": "ownerId"
},
....