From 0529fd569cb33ba9b0677afbd122b843421d8850 Mon Sep 17 00:00:00 2001 From: fuxiaochun Date: Fri, 18 Aug 2023 15:30:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=92=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ArticleDetail/index.vue | 4 +-- src/layouts/Header.vue | 31 +++++++++++++++++++ .../business/components/CategoryCardList.vue | 18 ++++++++--- 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/components/ArticleDetail/index.vue b/src/components/ArticleDetail/index.vue index 20830d5..b2c93e5 100644 --- a/src/components/ArticleDetail/index.vue +++ b/src/components/ArticleDetail/index.vue @@ -34,8 +34,7 @@ @@ -47,7 +46,6 @@ import { showToast } from 'vant'; import { useRouter, useRoute } from 'vue-router'; import { DateFormat } from '@/utils/format.js'; import AiAssistantFolat from '@/views/chat/components/ai-assistant-float.vue'; -import AiAssistant from '@/views/chat/components/ai-assistant.vue' const props = defineProps({ id: {type: [Number, String], required: true }, diff --git a/src/layouts/Header.vue b/src/layouts/Header.vue index 43d35a9..cfe3fce 100644 --- a/src/layouts/Header.vue +++ b/src/layouts/Header.vue @@ -58,6 +58,7 @@ const userInfo = useUserInfo(); const router = useRouter(); const route = useRoute(); const authModal = useAuthModal(); +const timer = ref(0); const showMenu = ref(false); @@ -70,8 +71,38 @@ onMounted(()=>{ if (userInfoData.id) { userInfo.updateUserInfo(userInfoData); } + + let authData = localCache.get('auth') || {}; + if (authData.expires_time) { + checkToken(); + } }); +const checkToken = () => { + let diffTime = 1000 * 60 * 10; // 10mins + let nowTime = Date.now(); + let authData = localCache.get('auth') || {}; + let overTime = authData.expires_time || nowTime; + if (overTime - nowTime <= diffTime) { + clearTimeout(timer.value); + flushtoken(); + } else { + timer.value = setTimeout(checkToken, 300000); //300000 + } +}; + +const flushtoken = () => { + http('/api/auth/refresh', {}).then(res => { + let nowTime = Date.now(); + let overTime = nowTime + res.data.expires_in * 1000; + let authData = { ...res.data, expires_time: overTime }; + localCache.set('auth', authData); + checkToken(); + }).catch(err => { + showToast(err.message); + }); +}; + const toggleMenu = ()=>{ showMenu.value = !showMenu.value; }; diff --git a/src/views/business/components/CategoryCardList.vue b/src/views/business/components/CategoryCardList.vue index b58f7e9..8de08d2 100644 --- a/src/views/business/components/CategoryCardList.vue +++ b/src/views/business/components/CategoryCardList.vue @@ -4,7 +4,9 @@