vue axios 401登录过期返回登录页

  • 在interceptor.js拦截器里封装axios响应状态处理
import axios from 'axios'
import $router from '@/router'
import { MessageBox, Message } from 'element-ui'

// create an axios instance
const http = axios.create({
  serverUrl: serverUrl,
  withCredentials: false, // send cookies when cross-domain requests
  // timeout: 10000 // request timeout
});

// response interceptor
http.interceptors.response.use(
  response => {
  	// ...do something
  },
  error => {
    // console.log('err' + error); // for debug
    if (error.response.status == 401) {//登录过期
      // to re-Login
      if(sessionStorage.getItem('isLoginOut') == undefined ) {//防止出现多次弹框
        sessionStorage.setItem('isLoginOut', true);//登出标记
        MessageBox.confirm('登录已过期,请重新登录!', '提示', {
          confirmButtonText: '确定',
          showClose: false,
          showCancelButton: false,
          closeOnClickModal: false,
          type: 'warning'
        }).then(() => {
          sessionStorage.clear();//清除缓存
          $router.push({path: '/'});//返回登录页
        })
      }
    }
    return Promise.reject(error)
  }
);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐