3

В StrongLoop API Explorer, у меня есть возможность запроса:Почему я получаю ошибку 401, когда я запрашиваю элементы пользователя?

/Люди/{ID}/food_prefs

Человек основан на встроенном в модели пользователя. Этот запрос должен возвращать JSON-список всех файлов food_pref для этого Person (User). Вместо этого я получаю ошибку 401 об авторизации.

Модельные отношения, таким образом:

Person has many food_prefs 
food_pref belongs to Person (foreign key: personId) 

food_pref модель выглядит следующим образом:

property: type : number 
property: personId : number 

Когда я отправить запрос на Person/{ID}/food_pref Я получаю ошибку 401:

{ 
    "error": { 
    "name": "Error", 
    "status": 401, 
    "message": "Authorization Required", 
    "statusCode": 401, 
    "code": "AUTHORIZATION_REQUIRED", 
    "stack": "Error: Authorization Required\n 
} 

Я еще не настроил ACL, но даже когда я его настраиваю для доступа ко всем, я все равно получаю эту ошибку. Зачем?

+0

Сначала необходимо проверить подлинность вашей личности, прежде чем делать запросы к API. Включите идентификатор сеанса, возвращенный для проверки подлинности в запросах. – marekful

+0

Я пробовал это, я получил токен аутентификации и установил токен в проводнике, все равно не повезло. Такая же ошибка. Это странно, потому что я могу сделать запрос на противоположное,/food_prefs/{id}/person и получить идентификатор пользователя и информацию по электронной почте для человека, которому принадлежит этот food_pref. –

+0

Также я сделал slc loopback: acl и установили человека для всех, у кого есть доступ ко всем методам, и даже это не помогло. –

ответ

0

Ответ заключается в добавлении следующих разрешений в раздел ACL в модели Person. Имя файла является общим/модели/person.json:

{ "accessType": "EXECUTE", 
    "principalType": "ROLE", 
    "principalId": "$everyone", 
    "permission": "ALLOW", 
    "property": "__get__foodPrefs" 
} 

Аналогичные свойства могут быть установлены для других методов, таких как те, которые вы используете, чтобы расширить модель, например, удаленный метод, называемый «GetList» установлен в общем/Модели/person.js. Вы просто замените __get__foodPrefs на getList. Обязательно обратите внимание, что автоматически созданные методы, такие как выше, имеют два символа подчеркивания, а не один.

Кроме того, другие разрешения могут быть $ идентифицирован, владелец $, и т.д ..