访问令牌中的用户 ID



为什么userId与accessToken一起提供?我们能不能从访问令牌API中找到使用过滤器userId? .谁能解释一下逻辑?

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

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

我可能是错的,但我非常怀疑您能否仅通过计算从访问令牌(基本上是反向令牌)中获取用户 ID,因为它是加密生成的令牌。

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

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

然后设置访问控制:

  • 拒绝所有人的一切
  • 格兰特$owner一种特定的ForumPosts方法

然后,您可以调用 rest 终结点,如下所示DELETE api/UserModel/{userId}/ForumPosts/{modelId}?access_token=UksV2aTVyKfUAzBm8cQKRO9NkCIKUHZCXXr4gZNrCj9zXBiUX8kXVE97RDQl1PcC

但是,这还不够。 ID = 1 的经过身份验证的用户可以调用 ID = 5 的终结点,并且请求将通过。

因此,您需要确保终端节点中提供的 userId 与 JSON 令牌匹配。最好的方法是使用操作钩子,就像本例中的before delete一样,并在那里检查从端点提供的 userId 生成的令牌是否与传递的令牌匹配。

希望这有帮助

最新更新