2016-02-25 5 views
0

Почему userId предоставляется вместе с accessToken? Можем ли мы найти userId с использованием фильтра API AccessToken? Может ли кто-нибудь объяснить логику?userID in accessToken

В настоящее время API (GET /accessTokens/{id}) ОТПРАВЛЕН ДЛЯ всех. Как мы можем переопределить то же самое, чтобы можно было проследить userId.

{ 
    "id": "UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC", 
    "ttl": 1209600, 
    "created": "2016-02-25T11:21:13.253Z", 
    "userId": "56cbf0beda568ffb103b78bc" 
    } 

ответ

0

Я могу ошибаться, но я очень сомневаюсь, что вы могли бы получить идентификатор пользователя из маркера доступа (в основном, обратный маркер) только расчетным путем, так как это crytographically generated маркер.

Если ваша цель ограничить доступ к определенному ресурсу определенному пользователю, необходимо установить связь между моделью и userModel, например UserModelhasManyForumPosts

Таким образом, вы можете знать, является ли конкретный ForumPosts экземпляр принадлежит определенному экземпляру UserModel (= конкретный пользователь).

Затем вы устанавливаете контроль доступа:

  • отрицает все для всех
  • GRANT $ владельца специфического метода ForumPosts

Вы можете назвать отдых конечной точку, как DELETE api/UserModel/{userId}/ForumPosts/{modelId}?access_token=UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC

Однако этого недостаточно. аутентифицированный пользователь с ID = 1 может вызывать конечную точку с id = 5, и запрос будет проходить.

Таким образом, вам необходимо убедиться, что userId, предоставленный в конечной точке, соответствует токену JSON. Лучший способ - использовать operation hook, например before delete, и проверить там, что генерация токена из предоставленного конечной точки пользователя соответствует совпадающему маркеру.

Надеется, что это помогает

+0

'идентификатор' атрибуту совместно в ответ авторизации ("ID": "UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC") на самом деле 'идентификатор' в маркере доступ объекта. Отношения встроены в петлевую структуру. Я чувствую, что только один токен должен быть разделен в ответе на входе, и идентификатор пользователя может быть извлечен из объекта accessToken (если API 'GET/accessTokens/{id}' получает права доступа $ Owner) –

+0

'id 'возвращается после POST логин - это, несомненно, сам токен доступа. См. Здесь в конце, если вы не уверены, https://docs.strongloop.com/display/public/LB/Introduction+to+User+model+authentication – Overdrivr

+0

Однако вы можете получить userId из API AccessToken REST, однако , потому что существует отношение 'accessToken'' принадлежит To'' User'defined здесь https://github.com/strongloop/loopback/blob/master/common/models/access-token.json Таким образом, это возможно, m не уверен, какой идентификатор вы должны использовать, сам токен доступа или его идентификатор внутри базы данных. Извините, если я не могу помочь вам дальше, но мои знания о петлевых тестах заканчиваются здесь – Overdrivr

Смежные вопросы