使用JWT和JSONAPI进行身份验证

Ser*_*pov 8 authentication rest jwt json-api

我正在使用以下技术/方法实现REST API:

我想实现身份验证端点,它应该在JSONAPI格式的POST请求中接收用户名和密码,并以JSONAPI格式返回JWT令牌.但我发现有一些矛盾不允许我100%RESTful:

让我们命名端点/tokens,因为它实际上创建了令牌.响应也是类型的资源tokens,例如:

{
  "data": {
    "type": "tokens",
    "attributes": {
      "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU",
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但请求怎么样?username并且password是用户的属性,但应将它们发送到/tokens端点.如果我将users资源发送到/tokens端点,那就没有多大意义了.

有没有办法解决这个问题,遵循JSONAPI并保持API的意义?

Mvd*_*vdD 5

如果我将用户资源发送到/ tokens端点,则没有多大意义.

为什么不?REST并不强制您只将用户发送到用户资源.当然,当您对用户资源进行CRUD操作时,您将通过用户资源端点执行此操作.

但是要生成令牌,将用户资源发送到令牌端点是完全合理的.