Browse Source

次元看板--调整看板session 失效,发布之后自动登录

xiaost 1 year ago
parent
commit
ac27463d0e
2 changed files with 91 additions and 5 deletions
  1. 87 3
      src/main.js
  2. 4 2
      src/views/login.vue

+ 87 - 3
src/main.js

@@ -72,6 +72,9 @@ Vue.prototype.$http.interceptors.request.use(config => {
   if(sessionStorage.getItem('x-access-token')) {
     config.headers['x-access-token'] = sessionStorage.getItem('x-access-token');
   }
+    config.headers['username'] = sessionStorage.getItem('username');
+    config.headers['password'] = sessionStorage.getItem('password');
+    config.headers['sob'] = sessionStorage.getItem('sob');
   /* if(config.params && config.params['condition']) {
      console.log(store.state.factory);
      config.params['condition'] = config.params['condition'] + " and v_outline='" + store.state.factory + "'";
@@ -93,6 +96,9 @@ Vue.prototype.$httpImg.interceptors.request.use(config => {
   if(sessionStorage.getItem('x-access-token')) {
     config.headers['x-access-token'] = sessionStorage.getItem('x-access-token');
   }
+    config.headers['username'] = sessionStorage.getItem('username');
+    config.headers['password'] = sessionStorage.getItem('password');
+    config.headers['sob'] = sessionStorage.getItem('sob');
   return config;
 });
 
@@ -102,13 +108,90 @@ Vue.prototype.$httpImg.interceptors.request.use(config => {
 // 则更新vuex中的token状态。然后,在每次请求接口的时候,都会在请求的header中携带token,
 // 后台人员就可以根据你携带的token来判断你的登录是否过期,如果没有携带,则说明没有登录过。
 // 添加响应拦截器
-/*Vue.prototype.$http.interceptors.response.use(function (response) {
+Vue.prototype.$http.interceptors.response.use(function (response) {
     if (response.status === 200) {
+        if(response.headers.get("token")) {
+           // console.log(response.headers.get("token"));
+            sessionStorage.setItem('x-access-token', response.headers.get("token"));
+        }
         return Promise.resolve(response);
     } else {
         return Promise.reject(response);
     }
-}, function (error) {
+}/* ,
+    function (error) {
+    // 对响应错误做点什么
+    if (error.response.status) {
+        switch (error.response.status) {
+            // 401: 未登录
+            // 未登录则跳转登录页面,并携带当前页面的路径
+            // 在登录成功后返回当前页面,这一步需要在登录页操作。
+            case 500:
+                router.replace({
+                    path: '/login',
+                    query: {
+                        redirect: router.currentRoute.fullPath
+                    }
+                });
+                break;
+            // 403 token过期
+            // 登录过期对用户进行提示
+            // 清除本地token和清空vuex中token对象
+            // 跳转登录页面
+            case 403:
+                this.$message({
+                    message: '登录过期,请重新登录',
+                    duration: 1000,
+                    type: 'success'
+                });
+                // 清除token
+                localStorage.removeItem('token');
+                store.commit('loginSuccess', null);
+                // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
+                setTimeout(() => {
+                    router.replace({
+                        path: '/login',
+                        query: {
+                            redirect: router.currentRoute.fullPath
+                        }
+                    });
+                }, 1000);
+                break;
+
+            // 404请求不存在
+            case 404:
+                this.$message({
+                    message: '网络请求不存在',
+                    duration: 1500,
+                    type: 'success'
+
+                });
+                break;
+            // 其他错误,直接抛出错误提示
+            default:
+                this.$message({
+                    message: error.response.data.message,
+                    duration: 1500,
+                    type: 'success'
+
+                });
+        }
+        return Promise.reject(error.response);
+    }
+}*/
+);
+
+Vue.prototype.$httpImg.interceptors.response.use(function (response) {
+        if (response.status === 200) {
+            if(response.headers.get("token")) {
+                sessionStorage.setItem('x-access-token', response.headers.get("token"));
+            }
+            return Promise.resolve(response);
+        } else {
+            return Promise.reject(response);
+        }
+    }/* ,
+    function (error) {
     // 对响应错误做点什么
     if (error.response.status) {
         switch (error.response.status) {
@@ -167,6 +250,7 @@ Vue.prototype.$httpImg.interceptors.request.use(config => {
         }
         return Promise.reject(error.response);
     }
-});*/
+}*/
+);
 
 

+ 4 - 2
src/views/login.vue

@@ -186,8 +186,10 @@
            setStoreSession(res){
              //登录成功返回session
              sessionStorage.setItem('x-access-token', res.token);
-             sessionStorage.setItem('user',res);
-             this.$store.commit('setUser',res);
+             sessionStorage.setItem('username',this.loginForm.username);
+             sessionStorage.setItem('password',this.loginForm.password);
+             sessionStorage.setItem('sob',this.loginForm.sob);
+             this.$store.commit('setUser',this.loginForm);
              this.$store.commit('setFactoryOptions',this.factoryoptions);
              this.$store.commit('setFactory',this.loginForm.factory);
            },