如何刷新令牌而不必再次通过身份验证? OAuth2

How to refresh token without getting having to go through auth again? OAuth2

如何刷新访问令牌而无需使用 OAuth2 再次执行身份验证过程?

现在,如果获取用户失败,我将执行刷新令牌,但为了执行刷新令牌,我必须首先收到 401 未经授权的错误。

当我无法执行请求后收到 401 时,我重定向到登录屏幕,因为如果我不重定向到登录屏幕,后续请求将不会显示。

如果我使用过期时间,则令牌不会在不先执行请求的情况下刷新,但在发出请求时令牌已经过期。

我想问的是我应该使用什么逻辑来刷新访问令牌,这样我的应用程序就不会在每次令牌过期并需要另一次身份验证时注销。

我希望我的应用程序的功能更像 facebook 或 google,您可以在其中保持登录状态直到注销。

提前致谢。

你能告诉我你使用的是什么类型的应用程序和技术堆栈吗?

有两次:

  • 访问令牌生命周期 - 短暂的 API 凭据(例如 60 分钟)

  • 用户会话生命周期(通常由刷新令牌表示 - 例如 12 小时)

有一些机制可以在客户端静默更新令牌。一般的方法是获取一个新令牌并在由于访问令牌过期而收到 401 时重试 API 调用,就像我的 this class 中那样。

获取新令牌的方式取决于应用程序的类型(移动/SPA/基于 cookie 的网络应用程序)