【问题标题】:When to update JWT access token with refresh token何时使用刷新令牌更新 JWT 访问令牌
【发布时间】:2022-12-23 09:59:21
【问题描述】:

我制作了一个带有外部认证服务器的类星体应用程序。登录后,我收到访问和刷新令牌。在我按下注销之前,刷新令牌不会过期。访问令牌在 10 分钟后过期。因此,由于我需要访问令牌来获取数据,因此在登录后的接下来 10 分钟内这是可能的。之后,我必须调用一个包含刷新令牌的 API 来获取新的访问令牌。 我的问题是,如何确保始终拥有有效的访问令牌而无需再次登录?

作为用户,我希望在注销之前登录并访问所有内容。如果我的应用程序只是闲置了 15 分钟,然后我想接收数据,那是不可能的。

我想以某种方式静默调用刷新令牌 api,但何时以及如何调用? 以特定时间间隔刷新令牌、更改页面或每次我想接收数据时刷新令牌是否常见? 我还没有找到有效的解决方案。

在启动文件中,我添加了刷新令牌方法。所以每次启动App,都会刷新token。例如,对于 iPhone 用户,应用程序不会完全关闭,因此在我手动完全关闭应用程序之前不会触发 init 方法。

我想在每次 API 调用太多之前刷新令牌。或者是吗?

【问题讨论】:

  • 在你的 axios 启动文件中,你可以检查令牌是否存在,过期日期时间,...如果你的 access_token 过期,调用你的刷新令牌方法,获取新的访问令牌...我们可以想象一个js axios.interceptors.request.use(config => { const store = securityStore() const isLoggedIn = store?.jwt; const expire = store.?expire expire > new Date() ? store.useRefreshToken().then(()=>{ return config })

标签: authentication jwt token access-token quasar-framework


【解决方案1】:

我的问题是,我怎样才能确保始终拥有有效的访问权限 token 无需再次登录?

您可以在 Quasar Axios 引导文件中使用 Axios 响应拦截器来检查响应是否因访问令牌过期而失败(基于状态代码,例如 401)。

axios.interceptors.response.use(
  (response) => {
    return res;
  },
  async(error) => {
    if (error.response) {
      if (error.response.status === 401) {
        // Use refresh token here to get new JWT token;
        // return a request
        return axios_instance(config);
      }
    }

    return Promise.reject(error);
  }
);

希望这可以帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2014-09-13
    • 2019-03-08
    • 2020-10-15
    • 2021-12-14
    • 2020-07-12
    • 2016-08-13
    • 2019-06-29
    相关资源
    最近更新 更多