【问题标题】:JWT Authentication Tokens With JSON:API使用 JSON:API 的 JWT 身份验证令牌
【发布时间】:2021-10-12 05:54:22
【问题描述】:

我正在创建一个实现 JSON:API 规范的 JSON API。然而我有一个问题,这个问题更普遍地适用于 RESTful 设计:处理资源“创建”的推荐方法是什么,其中一个属性是由服务器“计算”的?

在我的示例中,我有一个POST /auth/tokens 端点,它接受用户的凭据并返回一个JWT。我使用了 POST 端点,因为在我看来,我们正在创建一个令牌资源,即使该令牌没有保存到数据库中。但是,根据 JSON:API,正确的请求/响应应该是什么样的?这个?:

POST /auth/tokens

{
  "data": {
    "type": "tokens",
    "attributes": {
      "email": "...",
      "password": "..."
    }
  }
}

但是,使用电子邮件和密码创建令牌是否有意义?似乎它会为电子邮件/密码创建一个令牌。有区别吗?

更重要的是,响应会是什么样子?它看起来像这样:

{
  "data": {
    "type": "tokens",
    "attributes": {
      "token": "..."
    }
  }
}

但规范规定:

每个资源对象都必须包含一个 id 成员和一个 type 成员。 id 和 type 成员的值必须是字符串。

由于令牌没有保存到数据库中,我真的没有它们的 ID。我该怎么办?

【问题讨论】:

    标签: rest json-api


    【解决方案1】:

    JSON:API 规范没有说明这种情况,但是如果您查看一些实时实现,例如 https://docs.unit.co/customer-api-tokens#customers-create-customer-bearer-token,它们使用与您描述的类似的方法。在这种情况下,省略短寿命资源的 ID 似乎是可以的。

    【讨论】:

      猜你喜欢
      • 2020-11-22
      • 2017-10-22
      • 1970-01-01
      • 2020-07-07
      • 2019-08-04
      • 2019-01-22
      • 2020-08-23
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多