我有一个环回应用程序,每个客户都可以拥有自己的服务。因此,我需要客户只能查看,添加,编辑和删除它自己的服务。但无论我做什么,似乎客户既可以看到所有用户的所有服务,也可以看不到任何人的服务。
服务模式
"relations": {
"customer": {
"type": "belongsTo",
"model": "customer",
"foreignKey": "customerId"
}
}
我看到了alc:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
}
]
但是,如果它就像这个服务的所有者而且只有/ GET / {id}它的服务,但它不能/获取所有服务?!?
如果我使用它:
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW"
}
]
我得到了我需要的东西,但这是市长安全漏洞,因为每个客户都可以从所有其他客户那里获得所有服务。
答案 0 :(得分:2)
您需要在customerId
模型中添加属性service
,$owner
acl仅在api url中存在:id
段时才有效。
如果您的网址没有:id
,则可以创建自定义角色解析程序。