【发布时间】:2018-03-18 21:19:37
【问题描述】:
在我的环回应用程序中,我有两个模型: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": {}
}
发生的情况是,如果我在允许某些角色之前像现在这样拒绝所有人,则不允许任何人访问或创建事物,但如果我删除该行,所有用户都可以访问所有事物。我错过了什么?我希望只有所有者能够访问他们自己的东西。
谢谢!
【问题讨论】:
-
尝试启动您的服务器
DEBUG=loopback:security:* node .(linux & macos) 或set DEBUG=loopback:security:* & node .(windows) 以查看环回如何决定谁可以访问。 -
谢谢肯定会帮上大忙!但是,对于这种特殊情况,我不太确定如何解释这一点。似乎用户没有被识别为所有者?在 ACL 日志中,我知道 principalId 是
$everyone,这就是我被拒绝的原因。但是我到底如何将当前用户设置为允许创建和查看自己的things的用户? -
你能发送你试图用来变异
things的url吗? Loopback 通过查看您的access_token来解析用户(以及您是否是所有者) -
这是我用来获取
things的API调用:axios.get('localhost:3002/challenges', {params: { access_token: user.id}})。所以基本上,localhost:3002/challenges?access_token="[MY TOKEN]" -
你没有指定你得到什么的 id。安东尼奥的回答是正确的。你想要
axios.get('localhost:3002/challenges/' + TheIdOfTheChallengeIWant, {params: {access:token: user.id}})。
标签: javascript acl loopbackjs loopback