美文网首页
用户无感知刷新token

用户无感知刷新token

作者: 饼饼phoebe | 来源:发表于2020-11-24 22:08 被阅读0次

    utils/request.js

    import store from '@/store'
    import router from '@/router'
    
    // 全局响应拦截
    instance.interceptors.response.use(function (response) {
      return response
    }, async function (error) {
      if (error.response && error.response.status === 401) {
        const refreshToken = store.state.tokenInfo.refresh_token
        if (refreshToken) {
          try {
            const result = await axios({
              method: 'PUT',
              url: 'http://ttapi.research.itcast.cn/app/v1_0/authorizations',
              headers: {
                Authorization: `Bearer ${refreshToken}`
              }
            })
            const newToken = result.data.data.token
            store.commit('setToken', {
              refresh_token: refreshToken,
              token: newToken
            })
            // 重新使用我们之间创建的axios实例,用本次错误请求中的配置项,再发一次
            return instance(error.config)
          } catch {
            // 路由跳转,进入登陆页
            router.push({
              path: '/login',
              query: {
                // currentRoute:表示当前路由
                backto: router.currentRoute.fullPath
              }
            })
          }
        } else {
          // 路由跳转,进入登陆页
          router.push({
            path: '/login',
            query: {
              // currentRoute:表示当前路由
              backto: router.currentRoute.fullPath
            }
          })
        }
      }
      return Promise.reject(error)
    })
    

    相关文章

      网友评论

          本文标题:用户无感知刷新token

          本文链接:https://www.haomeiwen.com/subject/ljgwiktx.html