token过期续签
首页 > >    作者:lininn   2023年2月23日 18:27 星期四   热度:534°   百度已收录  
时间:2023-2-23 18:27   热度:534° 
/ 响应拦截器
instance.interceptors.response.use(
  response => {
    // 隐藏 loading 提示效果
    Toast.clear()
    return response
  },
  async error => {
    Toast.clear()

    // 1. 从 vuex 中获取 tokenInfo 对象,格式为: { token, refresh_token }
    const tokenInfo = store.state.tokenInfo
    // 2. 判断是否为 token 过期
    if (error.response && error.response.status === 401 && tokenInfo.refresh_token) {
      // token 过期
      console.log('token过期啦')

      try {
        // 3.1 TODO: 发起请求,根据 refresh_token 重新请求一个有效的新 token
        const { data: res } = await exchangeTokenAPI(tokenInfo.refresh_token)

        // 3.2 TODO: 更新 Store 中的 Token
        store.commit('updateTokenInfo', { token: res.data.token, refresh_token: tokenInfo.refresh_token })

        // 3.3 重新调用刚才“请求未遂”的接口
        // 3.3.1 如果在响应拦截器中 return 一个新的 Promise 异步请求,则会把这次请求的结果,当作上次请求的返回值
        return instance(error.config)
      } catch {
        //  token 和 refresh_token 都失效了

        // 4.1 清空 vuex 和 localStorage
        store.commit('cleanState')
        // 4.2 强制跳转到登录页
        router.replace('/login?pre=' + router.currentRoute.fullPath)
      }
    }
    return Promise.reject(error)
  }
)
二维码加载中...
本文作者:lininn      文章标题: token过期续签
本文地址:?post=575
版权声明:若无注明,本文皆为“覆手为雨”原创,转载请保留文章出处。
分享本文至:

返回顶部    首页    手机版本    后花园   会员注册   
版权所有:覆手为雨    站长: lininn