From 43bc0ca39be664ffaeea6256a9f2160f5a8f7e40 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Sat, 01 Aug 2020 18:28:30 +0800
Subject: [PATCH] OAuth自动刷新续签Token

---
 ruoyi-ui/src/views/index.vue |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue
index 4828d88..2fda0b8 100644
--- a/ruoyi-ui/src/views/index.vue
+++ b/ruoyi-ui/src/views/index.vue
@@ -35,6 +35,7 @@
 import RaddarChart from './dashboard/RaddarChart'
 import PieChart from './dashboard/PieChart'
 import BarChart from './dashboard/BarChart'
+import { getToken, getExpiresIn, setExpiresIn } from '@/utils/auth'
 
 const lineChartData = {
   newVisitis: {
@@ -66,12 +67,39 @@
   },
   data() {
     return {
+      //刷新token锁
+      refreshLock: false,
+      //刷新token的时间
+      refreshTime: '',
       lineChartData: lineChartData.newVisitis
     }
+  },
+  created() {
+    this.refreshToken()
   },
   methods: {
     handleSetLineChartData(type) {
       this.lineChartData = lineChartData[type]
+    },
+    // 实时检测刷新token
+    refreshToken() {
+      this.refreshTime = setInterval(() => {
+        if (null === getToken()) {
+          return;
+        }
+        const expires_in = getExpiresIn();
+        if (expires_in <= 1000 && !this.refreshLock) {
+          this.refreshLock = true
+          this.$store
+            .dispatch('RefreshToken')
+            .catch(() => {
+              clearInterval(this.refreshTime)
+            });
+          this.refreshLock = false
+        }
+        this.$store.commit("SET_EXPIRES_IN", expires_in - 10);
+        setExpiresIn(expires_in - 10);
+      }, 10000);
     }
   }
 }

--
Gitblit v1.9.3