我已阅读有关 JWT 和访问 token 以及刷新 token 的信息。我知道您必须在很短的时间(分钟)内设置访问 token 过期,并在过期时使用刷新 token 获取新的访问 token 。
我不清楚三件事:
谁检查访问 token 是否过期?客户端是否通过发送过期的访问 token 和刷新来检查并请求新的访问代码? 谁检查刷新 token 是否过期? (显然刷新 token 也需要过期,尽管过期需要更长的时间)。 从我的角度来看,如果刷新 token 已过期,则必须提示用户重新登录。这是在某些场景(移动应用程序)中需要避免的事情。如何避免?
回答你的问题:
当访问 token 过期时,API 使用访问 token 将返回错误。 API 使用刷新 token 获取新的访问 token 将返回与特定刷新 token 相关的错误。 关于刷新 token 的刷新,请看下面的回答。 通常,您需要对每个 API 调用进行一些错误处理。
关于刷新 token 的刷新
我调查了更多,这就是我发现的:
首次登录并授权获取访问 token 和刷新 token (可选),如果访问 token 永不过期,则不需要刷新 token 。 => https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/ ,最近(2019/11/16),我发现这真的取决于API提供商的实现,例如PayPal,他们提供了过期时间但没有刷新 token 的访问 token ,因此当访问 token 过期时,您必须再次获取新的访问 token 。 当访问 token 过期时,使用刷新 token 获取新的访问 token 和刷新 token (可选)=> https://www.oauth.com/oauth2-servers/access-tokens/refreshing-access-tokens/ .这次你有一个新的刷新 token ,这意味着你每次刷新访问 token 时都会有一个新的刷新 token 。如果响应没有新的新 token ,则您只有第一步中的旧刷新 token 。 如果用户长时间不使用该应用程序,则用户没有机会刷新访问 token 和刷新 token ,则用户需要在刷新 token 过期后重新登录。 就像@jwilleke 说的,即使用户不使用应用程序,服务器端或应用程序可以自动为用户完成,那么它将始终拥有新的访问 token 和刷新 token 。