如何使用 React 和 RTK 查询处理 JWT 令牌刷新周期:自动重新获取失败的查询

dam*_*ton 1 authentication jwt reactjs redux rtk-query

在我的应用程序中,我有一个令牌刷新端点/refresh,它在 cookie 中设置新的 JWT 刷新令牌并将新的 JWT 访问令牌作为 json 发送回。

由于访问令牌会在 5 分钟后过期,因此我需要在后台实现刷新逻辑,以便在访问令牌过期时启动。

目前我正在做的是通过调用api RTK Query,如果api拒绝查询,我调用refreshTokens突变。

我需要将此逻辑放入所有 api 查询中,如下所示:

 updateProfile(body)
      .unwrap()
      .catch((error) => {
        if (error && error.status === 403) {
          refreshTokens(null); // RTK Query Mutation
          updateProfile(body); // RTK Query Mutation
        }
      });
Run Code Online (Sandbox Code Playgroud)

这样做似乎是重复代码,因为它需要对所有 api 调用实现。

我想知道是否有一个全局解决方案可以在查询被拒绝时自动调用刷新令牌端点。