From fd94e23376be926500cf123eb05eebc16d23b829 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 19 Nov 2024 20:13:50 +0800 Subject: [PATCH] =?UTF-8?q?perf(X-Pack):=20Token=20=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E5=BC=83=E7=94=A8=E6=97=B6=E9=97=B4=E7=82=B9?= =?UTF-8?q?=E6=AF=94=E8=BE=83=E9=87=87=E7=94=A8=E7=9B=B8=E5=AF=B9=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/config/axios/refresh.ts | 14 ++++++++------ core/core-frontend/src/store/modules/user.ts | 16 +++++++++++++--- core/core-frontend/src/views/login/index.vue | 1 + .../src/views/mobile/login/index.vue | 1 + .../src/views/mobile/personal/index.vue | 1 + de-xpack | 2 +- 6 files changed, 25 insertions(+), 10 deletions(-) diff --git a/core/core-frontend/src/config/axios/refresh.ts b/core/core-frontend/src/config/axios/refresh.ts index bb517ef49c..62c68a1fff 100644 --- a/core/core-frontend/src/config/axios/refresh.ts +++ b/core/core-frontend/src/config/axios/refresh.ts @@ -11,12 +11,18 @@ const refreshUrl = '/login/refresh' const expConstants = 10000 +const expTimeConstants = 90000 + const isExpired = () => { const exp = wsCache.get('user.exp') if (!exp) { return false } - return exp - new Date().getTime() < expConstants + const time = wsCache.get('user.time') + if (!time) { + return exp - Date.now() < expConstants + } + return Date.now() - time > expTimeConstants } const delayExecute = (token: string) => { @@ -25,10 +31,6 @@ const delayExecute = (token: string) => { cb(token) }) requestStore.cleanCacheRequest() - /* cachedRequestList.forEach(cb => { - cb(token) - }) - cachedRequestList = [] */ } const getRefreshStatus = () => { @@ -40,7 +42,6 @@ const setRefreshStatus = (status: boolean) => { const cacheRequest = cb => { requestStore.addCacheRequest(cb) - // cachedRequestList.push(cb) } export const configHandler = config => { @@ -61,6 +62,7 @@ export const configHandler = config => { .then(res => { userStore.setToken(res.data.token) userStore.setExp(res.data.exp) + userStore.setTime(Date.now()) config.headers['X-DE-TOKEN'] = res.data.token delayExecute(res.data.token) }) diff --git a/core/core-frontend/src/store/modules/user.ts b/core/core-frontend/src/store/modules/user.ts index 63faa0b3cc..6a65b8020e 100644 --- a/core/core-frontend/src/store/modules/user.ts +++ b/core/core-frontend/src/store/modules/user.ts @@ -11,6 +11,7 @@ interface UserState { oid: string language: string exp: number + time: number } export const userStore = defineStore('user', { @@ -21,7 +22,8 @@ export const userStore = defineStore('user', { name: null, oid: null, language: 'zh-CN', - exp: null + exp: null, + time: null } }, getters: { @@ -42,6 +44,9 @@ export const userStore = defineStore('user', { }, getExp(): number { return this.exp + }, + getTime(): number { + return this.time } }, actions: { @@ -57,7 +62,8 @@ export const userStore = defineStore('user', { const data = res.data data.token = wsCache.get('user.token') data.exp = wsCache.get('user.exp') - const keys: string[] = ['token', 'uid', 'name', 'oid', 'language', 'exp'] + data.time = wsCache.get('user.time') + const keys: string[] = ['token', 'uid', 'name', 'oid', 'language', 'exp', 'time'] keys.forEach(key => { const dkey = key === 'uid' ? 'id' : key @@ -74,6 +80,10 @@ export const userStore = defineStore('user', { wsCache.set('user.exp', exp) this.exp = exp }, + setTime(time: number) { + wsCache.set('user.time', time) + this.time = time + }, setUid(uid: string) { wsCache.set('user.uid', uid) this.uid = uid @@ -95,7 +105,7 @@ export const userStore = defineStore('user', { locale.setLang(language) }, clear() { - const keys: string[] = ['token', 'uid', 'name', 'oid', 'language', 'exp'] + const keys: string[] = ['token', 'uid', 'name', 'oid', 'language', 'exp', 'time'] keys.forEach(key => wsCache.delete('user.' + key)) } } diff --git a/core/core-frontend/src/views/login/index.vue b/core/core-frontend/src/views/login/index.vue index 448bea623e..44a71d5c5a 100644 --- a/core/core-frontend/src/views/login/index.vue +++ b/core/core-frontend/src/views/login/index.vue @@ -123,6 +123,7 @@ const handleLogin = () => { const { token, exp } = res.data userStore.setToken(token) userStore.setExp(exp) + userStore.setTime(Date.now()) if (!xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) { const param = { methodName: 'init' diff --git a/core/core-frontend/src/views/mobile/login/index.vue b/core/core-frontend/src/views/mobile/login/index.vue index a5e21e9c98..9fd471204a 100644 --- a/core/core-frontend/src/views/mobile/login/index.vue +++ b/core/core-frontend/src/views/mobile/login/index.vue @@ -96,6 +96,7 @@ const onSubmit = async () => { const { token, exp } = res.data userStore.setToken(token) userStore.setExp(exp) + userStore.setTime(Date.now()) router.push({ path: '/index' }) }) .catch(() => { diff --git a/core/core-frontend/src/views/mobile/personal/index.vue b/core/core-frontend/src/views/mobile/personal/index.vue index 120fbc9171..b17d3bdccd 100644 --- a/core/core-frontend/src/views/mobile/personal/index.vue +++ b/core/core-frontend/src/views/mobile/personal/index.vue @@ -98,6 +98,7 @@ const switchHandler = (id: number | string) => { const token = res.data.token userStore.setToken(token) userStore.setExp(res.data.exp) + userStore.setTime(Date.now()) window.location.reload() }) } diff --git a/de-xpack b/de-xpack index 4ade726502..e26306dcac 160000 --- a/de-xpack +++ b/de-xpack @@ -1 +1 @@ -Subproject commit 4ade726502814434828dc4b6195c35dfeb4d3379 +Subproject commit e26306dcac49eb95ba8dc92b4d5e4568f31f0581