accessToken中的userID

时间:2016-02-25 11:48:12

标签: node.js loopbackjs

为什么userId与accessToken一起提供?我们是否可以使用AccessToken API中的过滤器找到userId?任何人都可以解释逻辑吗?

截至目前,API(GET /accessTokens/{id})已全部拒绝。我们如何覆盖相同的内容,以便可以跟踪userId

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

1 个答案:

答案 0 :(得分:0)

我可能错了,但我非常怀疑你可以从访问令牌中获取用户ID(基本上,反转令牌)只是通过计算,因为它是一个密码学generated令牌

如果您的目标是限制某个特定用户访问某个资源,则需要在模型和userModel之间建立关系,例如UserModel hasMany ForumPosts

这样,您就可以知道特定ForumPosts实例是否属于特定UserModel实例(=特定用户)。

然后设置访问控制:

  • DENY all to everyone
  • GRANT $所有者ForumPosts
  • 的具体方法

然后您可以调用休息端点,如DELETE api/UserModel/{userId}/ForumPosts/{modelId}?access_token=UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC

然而,这还不够。 ID = 1的经过身份验证的用户可以调用id = 5的端点,并且请求将通过。

因此,您需要确保端点中提供的userId与JSON令牌匹配。最好的方法是在这种情况下使用operation hook,例如before delete,并检查从端点提供的userId生成令牌是否与传递的令牌匹配。

希望这有帮助