Kaynağa Gözat

$http也处理登录失效错误信息

Michael Wang 6 yıl önce
ebeveyn
işleme
f96e164c9e
2 değiştirilmiş dosya ile 63 ekleme ve 1 silme
  1. 62 1
      src/plugins/axios.js
  2. 1 0
      vue.config.js

+ 62 - 1
src/plugins/axios.js

@@ -82,6 +82,15 @@ _axiosWithoutResponseInterceptors.interceptors.request.use(
     if (config.url.includes("/login") === false) {
       if (!wk_token) {
         const user = JSON.parse(window.sessionStorage.getItem("user"));
+        if (!user) {
+          Vue.prototype.$alert("登录失效,请重新登录!", "提示", {
+            confirmButtonText: "确定",
+            callback: () => {
+              router.push("/login/" + "?orgId=" + wk_orgId);
+            }
+          });
+          return;
+        }
         wk_token = user.token;
         wk_key = user.key;
         wk_orgId = user.rootOrgId;
@@ -128,7 +137,7 @@ _axios.interceptors.response.use(
 
     // 登录失效 跳转登录页面
     if (status == 403 || status == 401) {
-      Vue.prototype.$alert("登录失效,请重新登录!", "提示", {
+      Vue.prototype.$alert("登录失效请重新登录!", "提示", {
         confirmButtonText: "确定",
         callback: () => {
           router.push("/login/" + "?orgId=" + wk_orgId);
@@ -143,6 +152,11 @@ _axios.interceptors.response.use(
         }
       });
       return Promise.reject(error);
+    } else if (status == 502) {
+      Vue.prototype.$alert("服务器异常!", "提示", {
+        confirmButtonText: "确定"
+      });
+      return Promise.reject(error);
     }
 
     if (status != 200) {
@@ -176,6 +190,53 @@ _axios.interceptors.response.use(
   }
 );
 
+// Add a response interceptor
+_axiosWithoutResponseInterceptors.interceptors.response.use(
+  response => {
+    return response;
+  },
+  error => {
+    if (!error.response) {
+      Vue.prototype.$notify({
+        showClose: true,
+        message: "网络连接异常,请检查网络设置。",
+        type: "error"
+      });
+      return Promise.reject(error);
+    }
+    // 这里是返回状态码不为200时候的错误处理
+    let status = error.response.status;
+
+    // 登录失效 跳转登录页面
+    if (status == 403 || status == 401) {
+      Vue.prototype.$alert("登录失效,请重新登录!", "提示", {
+        confirmButtonText: "确定",
+        callback: () => {
+          router.push("/login/" + "?orgId=" + wk_orgId);
+        }
+      });
+      return Promise.reject(error);
+    } else if (status == 405) {
+      Vue.prototype.$alert("没有权限!", "提示", {
+        confirmButtonText: "确定",
+        callback: () => {
+          router.push("/login/" + "?orgId=" + wk_orgId);
+        }
+      });
+      return Promise.reject(error);
+    } else if (status == 502) {
+      Vue.prototype.$alert("服务器异常!", "提示", {
+        confirmButtonText: "确定"
+      });
+      return Promise.reject(error);
+    }
+
+    if (status != 200) {
+      return Promise.reject(error);
+    }
+  }
+);
+
 Plugin.install = function(Vue) {
   Vue.$http = _axiosWithoutResponseInterceptors;
   Object.defineProperties(Vue.prototype, {

+ 1 - 0
vue.config.js

@@ -51,6 +51,7 @@ module.exports = {
     proxy
   },
   configureWebpack: {
+    devtool: "source-map",
     plugins: [
       // Ignore all locale files of moment.js
       new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)