Loopback $owner не работает для findById
Я хотел бы получить некоторую информацию о моем пользователе с обратной связью. Для этого я создал "user"
модель, связанная с "accessToken"
модель до сих пор ПОСТ на /user
ПОЧТА на /user/login
и ПОЧТА на /user/logout
работает.
Я добавил на /common/models/user.json
{
"name": "user",
"base": "User",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {},
"validations": [],
"relations": {
"accessTokens": {
"type": "hasMany",
"model": "accessToken",
"foreignKey": "userId"
}
},
"acls": [
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": "logout"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW",
"property": "findById"
}
],
"methods": {}
}
И когда я получаю на /user/{id}
Я получил:
{
"error": {
"statusCode": 401,
"name": "Error",
"message": "Autorisation requise",
"code": "AUTHORIZATION_REQUIRED",
"stack": "Error: Autorisation requise\n at..."
}
}
Я думаю, я не очень хорошо понял ACL / отношение
0 ответов
Это может быть потому, что вы только позволяете $owner
в findById
:
Чтобы квалифицировать $ owner, целевая модель должна иметь отношение ownTo к модели User (или модели, расширяющей User) и свойство, соответствующее внешнему ключу экземпляра целевой модели. Проверка на $ owner выполняется только для удаленного метода, в пути которого есть ': id', например, GET /api/users/:id.
- Убедитесь, что
accessToken
вы предоставляете является владельцемid
изuser
ты ищешь. - Если вы не уверены, попробуйте заменить:
"principalId": "$owner"
с"principalId": "$authenticated"
, тогда вы узнаете, если это ваша проблема.