jwt 过期刷新token之后,后面的请求咋办?

我使用的是spring-security+oauth2+jwt生成access_token和refresh_token,access_token设置成2小时过期,然后使用refresh_token获取新的access_token和refresh_token,这里都没问题,问题是,我获取完之后,之前的请求咋办?没有继续请求断了。

阅读 1.9k
2 个回答

你可以使用axios在错误拦截里继续之前的请求。

axios.interceptors.response.use(
  error => {
    /*
    *当响应码为 401 时,尝试刷新令牌。
   */
    if (status == 401) {
      return axios.post('/api/login/refresh', {}, {
        headers: {
          'Authorization': 'Bearer ' + getRefreshToken()
        }
      }).then(async response => {
        const data = response.data.data
        setToken(data.token)
        setRefreshToken(data.refreshToken)
        error.response.config.headers['Authorization'] = 'Bearer ' + data.token
        return await axios(error.response.config).then(res => res.data)
      }).catch(error => {
        //清理token
        store.dispatch('user/resetToken')
        this.router.push('/login')
        return Promise.reject(error)
      })
    }
  }
)
新手上路,请多包涵

正常是在请求发出前附加上access_token

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
宣传栏