perf: 优化用户session 会话过期

This commit is contained in:
feng
2024-01-31 18:30:22 +08:00
committed by Bryan
parent e1e54bf7a3
commit 5879eed926

View File

@@ -2,12 +2,10 @@
import store from '@/store'
import router, { resetRouter } from '@/router'
import Vue from 'vue'
import VueCookie from 'vue-cookie'
import { message } from '@/utils/message'
import orgUtil from '@/utils/org'
import orgs from '@/api/orgs'
import { getPropView, isViewHasOrgs } from '@/utils/jms'
import request from '@/utils/request'
const whiteList = ['/login', process.env.VUE_APP_LOGIN_PATH] // no redirect whitelist
@@ -15,44 +13,11 @@ function reject(msg) {
return new Promise((resolve, reject) => reject(msg))
}
function isRenewalExpired(renewalTime) {
const currentTimeStamp = Math.floor(new Date().getTime() / 1000)
const sessionExpireTimestamp = VueCookie.get('jms_session_expire_timestamp')
if (!sessionExpireTimestamp) {
return false
}
const timeDifferenceInSeconds = currentTimeStamp - parseInt(sessionExpireTimestamp, 10)
return timeDifferenceInSeconds > renewalTime
}
async function checkLogin({ to, from, next }) {
if (whiteList.indexOf(to.path) !== -1) {
next()
}
// Determine whether the user has logged in
const sessionExpire = VueCookie.get('jms_session_expire')
if (!sessionExpire) {
request.get(process.env['VUE_APP_LOGOUT_PATH']).finally(() => {
window.location = process.env.VUE_APP_LOGIN_PATH
})
return reject('No session mark found in cookie')
} else if (sessionExpire === 'close') {
let startTime = new Date().getTime()
const intervalId = setInterval(() => {
const endTime = new Date().getTime()
const delta = (endTime - startTime)
startTime = endTime
Vue.$log.debug('Set session expire: ', delta)
if (!isRenewalExpired(120)) {
VueCookie.set('jms_session_expire', 'close', { expires: '2m' })
} else {
clearInterval(intervalId)
}
}, 10 * 1000)
} else if (sessionExpire === 'age') {
Vue.$log.debug('Session expire on age')
}
try {
return await store.dispatch('users/getProfile')
} catch (e) {