From 0e8b8aad9bdce63c12b9ba888d6de51ad57188af Mon Sep 17 00:00:00 2001 From: ivamp Date: Thu, 17 Oct 2024 22:06:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=20=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layouts/DefaultLayout.vue | 2 +- src/stores/user.ts | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/layouts/DefaultLayout.vue b/src/layouts/DefaultLayout.vue index 4a79b58..89444c9 100644 --- a/src/layouts/DefaultLayout.vue +++ b/src/layouts/DefaultLayout.vue @@ -83,7 +83,7 @@ const onScroll = (e: Event) => {
-
+
diff --git a/src/stores/user.ts b/src/stores/user.ts index f92cf04..b1404a9 100644 --- a/src/stores/user.ts +++ b/src/stores/user.ts @@ -42,10 +42,15 @@ export const useUserStore = defineStore("user", { this.logined = true; }, checkAndRefresh() { - if (this.logined) { - if (this.expired_at - Date.now() < 60000) { - this.refresh(); - } + // 检测是否过期 + if (this.expired_at - Date.now() < 0) { + this.refresh(); + } else if ( + this.logined && + this.expired_at - Date.now() > 600 && + this.expired_at - Date.now() < 1000 + ) { + this.refresh(); } }, setupTimer() { @@ -80,6 +85,7 @@ export const useUserStore = defineStore("user", { if (error.response.status === 401) { console.log("Refresh token failed"); } + // logout this.logout(); clearInterval(timer); @@ -94,5 +100,8 @@ export const useUserStore = defineStore("user", { getIdToken() { return this.id_token; }, + isExpired() { + return this.expired_at - Date.now() < 0; + }, }, });