vueログイン期限切れリダイレクトとリクエストブロッカー

2538 ワード

次のコードは同じjsファイルに入れることができます.
ログイン期限切れリダイレクト
// http response              
axios.interceptors.response.use(response => {
  switch (response.data.code) {
    case 104:
      alert('      ,     ')
      setTimeout(function () {
        router.replace({
          path: '/Login'
          //               
          // query: {redirect: router.currentRoute.fullPath}
        })
      }, 1500)
      break
    case 102:
      alert('      ,     ')
      setTimeout(function () {
        router.replace({
          path: '/Login'
          //               
          // query: {redirect: router.currentRoute.fullPath}
        })
      }, 1500)
      break
  }
  return response
}, error => {
  if (error.response) {
    //            
    return Promise.reject(error.response.data)
  }
})

リクエストブロッキング
//     ,   post    ,   config data,               
axios.interceptors.request.use(
  config => {
    if (config.method === 'post') {
      // config.data = qs.stringify(config.data)
      console.log(config)
    }
    return config
  },
  error => {
    console.log(error)
    Promise.reject(error)
  }
)

ちなみにパッケージをリクエスト
// get         headers                  
export function getAjax (url, params = {}) {
  return new Promise((resolve, reject) => {
      axios.get(url, {
        params: params,
        headers: {
          'USERNAME': userInfo.SIP_NO,
          'AUTH-TOKEN': userInfo.TOKEN,
          'TIMESTAMP': Math.round(new Date() / 1000)
        }
      })
        .then(response => {
          resolve(response.data)
        })
        .catch(err => {
          reject(err)
        })
  })
}
//                 js  ,   
//import {getAjax} from './assets/common/REQUEST'


//getAjax(url,data).then(res =>{})


// post  
export function postAjax (url, data = {}) {
  return new Promise((resolve, reject) => {
      axios.post(url, data, {
        headers: {
          'USERNAME': userInfo.SIP_NO,
          'AUTH-TOKEN': userInfo.TOKEN,
          'TIMESTAMP': Math.round(new Date() / 1000)
        }
      })
        .then(response => {
          resolve(response.data)
        }, err => {
          reject(err)
        })
  })
}
//                 js  ,   
//import {postAjax} from './assets/common/REQUEST'


//postAjax(url,data).then(res =>{})

deleteのパッケージとputはこの例をそのまま参考に書いておけばOKなので、手をこまねいてみてください