Я пытаюсь настроить loopback-проект, и у меня возникает основная проблема, которую я не могу понять.
Итак, у меня есть обычная пользовательская модель, определенная со следующими отношениями и acls:
"relations": {
...
"projects": {
"type": "hasMany",
"model": "project",
"foreignKey": "userId"
}
}
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
}
]
И модель проекта, определяемая свойствами:
"relations": {
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": "userId"
}
},
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": "create"
}
]
Прежде всего, к моему удивлению, когда я отправлял POST/проекты во время входа в систему, я ожидал, что внешний ключ будет автоматически помещен в объект, но похоже, что это нужно делать вручную. Я полагаю, что это нормально, я думаю, я ожидал слишком многого из рамки.
При этом я изо всех сил старался перечислить все проекты, принадлежащие зарегистрированному пользователю. Выполнение GET/projects/{id} с {id} является объектом, принадлежащим зарегистрированному пользователю. И когда {id} указывает на объект, НЕ принадлежащий зарегистрированному пользователю, я получаю, как и ожидалось, 401.
Но потом я ожидал, что запуск/проекты вернут все проекты, принадлежащие зарегистрированному пользователю, но вместо этого выкинет 401 на мое лицо.
Что мне не хватает? Является ли моя настройка ACL неправильной? Использую ли я неправильный метод? Я попробовал поместить фильтр как "{" где ": {" userId ":" myId "}}, но не повезло. Я также попробовал другие endpoint/user/myId/projects, не повезло.
Спасибо
Поэтому я предполагаю, что я просто ошибочно ошибался, GET/projects не был правильным вызовом, а вместо этого GET/users/{userId}/projects. ACL и отношения кажутся правильными.
model-config.json
чтобы убедиться, что встроенная модельUser
не является общедоступной? Вполне возможно, что вы используете его вместо своейuser
модели.