2016-02-25 20 views
0

爲什麼userId與accessToken一起提供?我們能否使用AccessToken API中的過濾器找到userId? 。任何一個人都可以解釋邏輯嗎?accessToken中的用戶ID

截至目前,API(GET /accessTokens/{id})已被全部拒絕。我們怎麼能覆蓋相同的,以便userId可以跟蹤。

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

回答

0

我可能是錯的,但我很懷疑你能獲得訪問令牌的用戶ID(基本上,扭轉令牌)只是計算,因爲它是一個crytographically generated令牌。

如果你的目標是限制訪問某個資源給某個用戶,你需要建立模型和的usermodel之間的關係,例如UserModelhasManyForumPosts

這樣,您就可以知道是否有特定ForumPosts實例屬於特定UserModel實例(=特定用戶)。

然後你設置訪問控制:

  • 全部拒絕給大家
  • GRANT $所有者的ForumPosts

的具體方法然後可以調用REST端點像DELETE api/UserModel/{userId}/ForumPosts/{modelId}?access_token=UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC

但是,這是不夠的。 ID = 1的經過身份驗證的用戶可以調用id = 5的端點,並且該請求會通過。

因此,您需要確保端點中提供的userId與JSON令牌相匹配。最好的方法是在這種情況下使用operation hook,如before delete,然後檢查是否從端點生成了令牌 - 所提供的userId與傳遞的令牌相匹配。

希望這有助於

+0

'id' 屬性中登錄響應( 「ID」: 「UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC」)共享實際上是的accessToken對象的 'ID'。關係在內置的回送框架中。我覺得只有令牌需要在登錄響應中共享,並且可以從accessToken對象中檢索userID(提供的API'GET/accessTokens/{id}'被賦予$ Owner的訪問權限) –

+0

POST後返回的id爲登錄毫無疑問是訪問令牌本身。如果您不確定,請參見此處https://docs.strongloop.com/display/public/LB/Introduction+to+User+model+authentication – Overdrivr

+0

但是,您可以從AccessToken REST API獲取userId ,因爲有一個關係'accessToken'' belongsTo''User'在這裏定義https://github.com/strongloop/loopback/blob/master/common/models/access-token.json這樣就有可能,除了我' m不知道你應該使用什麼id,訪問令牌本身或其在數據庫中的id。對不起,如果我不能幫你進一步,但我的迴環知識在這裏結束 – Overdrivr