API:是否需要在每个请求中发送身份验证 header 令牌?

APIs: Do you need to send the authentication header token with every request?

我目前正在制作一个 API 并想知道 API 用户是否必须在每次发出请求时发送令牌。我正在使用 Flask_JWT_Extended 来处理 API 的身份验证。令牌在 header.

中发送

是的,这是 REST“无状态”约束的后果之一。

each request from client to server must contain all of the information necessary to understand the request -- Fielding 2000

当您使用 JWT 作为身份验证和授权时,是的 - 您的消费者需要在每个请求中发送令牌以证明他已通过身份验证。

想法是:

  • 针对登录服务进行身份验证
  • 获得令牌
  • 针对不需要 store/share 会话的多个服务使用此令牌

您甚至可以使用 JWT 实现会话并要求您的用户发送会话 cookie 或类似内容 - 但这样做时,您会遇到需要在不同服务之间共享服务器端会话的问题,其中 JWT 是一种摆脱它的方法。

当然,在很多情况下,JWT 令牌本身的大小比简单的 cookie 大,但现在这应该不是什么大问题。