Sfoglia il codice sorgente

登录和登录监听

shiyu 3 anni fa
parent
commit
b0361828ca
2 ha cambiato i file con 54 aggiunte e 18 eliminazioni
  1. 6 10
      src/views/login.vue
  2. 48 8
      src/views/page/pageMenu.vue

+ 6 - 10
src/views/login.vue

@@ -69,8 +69,7 @@ export default {
                         data: this.form,
                     }).then((res) => {
                         if (res.code == 200 && res.info) {
-                            let Authorization =
-                                "Bearer " + res.info.access_token;
+                            let Authorization = res.info.token_type + ' ' + res.info.access_token;
                             let refreshToken = res.info.refresh_token;
                             let expiresTime = res.info.expires_time;
 
@@ -87,9 +86,8 @@ export default {
                                 new Date(expiresTime).getTime() -
                                 new Date().getTime();
 
-                            console.log("go1", toExpiresTime);
                             // 过期时间前60秒即可发送获取新的token
-                            if (toExpiresTime > 60 * 1000) {
+                            /*if (toExpiresTime > 60 * 1000) {
                                 tokenTimer = setTimeout(() => {
                                     this.getRefreshToken();
                                     clearTimeout(tokenTimer);
@@ -99,7 +97,7 @@ export default {
                                 this.getRefreshToken();
                             }
 
-                            this.$message.success("登录成功");
+                            this.$message.success("登录成功");*/
                             this.$router.push({ path: "/mainPage" });
                         } else {
                             this.$message.error(res.message || "登录失败");
@@ -117,7 +115,7 @@ export default {
                 },
             }).then((res) => {
                 if (res.code == 200 && res.info) {
-                    let Authorization = "Bearer " + res.info.access_token;
+                    let Authorization = res.info.token_type + ' ' + res.info.access_token;
                     let refreshToken = res.info.refresh_token;
                     let expiresTime = res.info.expires_time;
 
@@ -130,9 +128,7 @@ export default {
                     let toExpiresTime =
                         new Date(expiresTime).getTime() - new Date().getTime();
 
-                    // 过期时间前60秒即可发送获取新的token
-                    console.log("go", toExpiresTime);
-                    if (toExpiresTime > 60 * 1000) {
+                    /*if (toExpiresTime > 60 * 1000) {
                         tokenTimer = setTimeout(() => {
                             this.i++;
                             if (this.i >= 10) {
@@ -146,7 +142,7 @@ export default {
                         }, 15 * 1000);
                     } else {
                         this.getRefreshToken();
-                    }
+                    }*/
                 } else {
                     this.$message.error(res.message || "获取refresh_token失败");
                 }

+ 48 - 8
src/views/page/pageMenu.vue

@@ -163,13 +163,34 @@ export default {
                 "workManagement",
             ],
             activeMenu: "mainPage", // 当前menu
+            expiresTime: '',
+            toExpiresTime: '',
+            tokenTimer: undefined   
         };
     },
-
     computed: {
         ...mapState(["themeColor"]),
     },
+    mounted() {
+        let menuKind = this.$route.meta.menuKind;
 
+        if (menuKind && menuKind !== "mainPage") {
+            this.$refs.menu.open(menuKind);
+        }
+
+        //设置一个定时器定时查看过期时间,如果距离过期时间小于5min,则发送refreshToken
+        /*
+        this.expiresTime = localStorage.getItem('expiresTime')
+        this.toExpiresTime = new Date(this.expiresTime).getTime() - new Date().getTime();
+        if(this.toExpiresTime < 5*60*1000){
+            this.refreshToken()
+        }else{
+            setInterval(function(){
+                let that = this;
+                that.checkExpiresTime()
+            }, 5*60*1000)
+        }*/
+    },
     methods: {
         menuFoldHandle(val) {
             if (val) {
@@ -190,13 +211,32 @@ export default {
                 });
             }
         },
-    },
-
-    mounted() {
-        let menuKind = this.$route.meta.menuKind;
-
-        if (menuKind && menuKind !== "mainPage") {
-            this.$refs.menu.open(menuKind);
+        checkExpiresTime(){
+            this.toExpiresTime = new Date(this.expiresTime).getTime() - new Date().getTime();
+            if(this.toExpiresTime < 5*60*1000){
+                this.refreshToken()
+            }
+        },
+        refreshToken(){
+            this.$axios({
+                method: "post",
+                url: this.$api.common.refreshToken,
+                data: {
+                    refreshToken: localStorage.getItem("refreshToken"),
+                },
+            }).then((res) => {
+                if (res.code == 200 && res.info) {
+                    let Authorization = res.info.token_type + ' ' + res.info.access_token;
+                    let refreshToken = res.info.refresh_token;
+                    let expiresTime = res.info.expires_time;
+                    localStorage.clear();
+                    localStorage.setItem("Authorization", Authorization);
+                    localStorage.setItem("refreshToken", refreshToken);
+                    localStorage.setItem("expiresTime", expiresTime);
+                    this.expiresTime = expiresTime
+                    this.toExpiresTime = new Date(this.expiresTime).getTime() - new Date().getTime();
+                }
+            })
         }
     },
 };