mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-25 14:25:23 +00:00
Merge pull request #3692 from jumpserver/pr@dev@login_expire
perf: 登录过期自动退出
This commit is contained in:
@@ -8,6 +8,8 @@ import orgUtil from '@/utils/org'
|
|||||||
import orgs from '@/api/orgs'
|
import orgs from '@/api/orgs'
|
||||||
import { getPropView, isViewHasOrgs } from '@/utils/jms'
|
import { getPropView, isViewHasOrgs } from '@/utils/jms'
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
import i18n from '@/i18n/i18n'
|
||||||
|
import { MessageBox } from 'element-ui'
|
||||||
|
|
||||||
const whiteList = ['/login', process.env.VUE_APP_LOGIN_PATH] // no redirect whitelist
|
const whiteList = ['/login', process.env.VUE_APP_LOGIN_PATH] // no redirect whitelist
|
||||||
|
|
||||||
@@ -39,12 +41,30 @@ async function checkLogin({ to, from, next }) {
|
|||||||
return reject('No session mark found in cookie')
|
return reject('No session mark found in cookie')
|
||||||
} else if (sessionExpire === 'close') {
|
} else if (sessionExpire === 'close') {
|
||||||
let startTime = new Date().getTime()
|
let startTime = new Date().getTime()
|
||||||
|
this.newLoginHasOpen = false
|
||||||
const intervalId = setInterval(() => {
|
const intervalId = setInterval(() => {
|
||||||
const endTime = new Date().getTime()
|
const endTime = new Date().getTime()
|
||||||
const delta = (endTime - startTime)
|
const delta = (endTime - startTime)
|
||||||
startTime = endTime
|
startTime = endTime
|
||||||
Vue.$log.debug('Set session expire: ', delta)
|
Vue.$log.debug('Set session expire: ', delta)
|
||||||
if (!isRenewalExpired(120)) {
|
const currentTimeStamp = Math.floor(endTime / 1000)
|
||||||
|
const sessionExpireTimestamp = VueCookie.get('jms_session_expire_timestamp')
|
||||||
|
if (currentTimeStamp >= parseInt(sessionExpireTimestamp, 10)) {
|
||||||
|
if (!this.newLoginHasOpen) {
|
||||||
|
this.newLoginHasOpen = true
|
||||||
|
MessageBox.confirm(
|
||||||
|
i18n.t('auth.LoginRequiredMsg'),
|
||||||
|
i18n.t('common.Info'),
|
||||||
|
{
|
||||||
|
confirmButtonText: i18n.t('auth.ReLogin'),
|
||||||
|
cancelButtonText: i18n.t('common.Cancel'),
|
||||||
|
type: 'warning'
|
||||||
|
}).finally(() => {
|
||||||
|
window.location = '/core/auth/logout/'
|
||||||
|
clearInterval(intervalId)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else if (!isRenewalExpired(120)) {
|
||||||
VueCookie.set('jms_session_expire', 'close', { expires: '2m' })
|
VueCookie.set('jms_session_expire', 'close', { expires: '2m' })
|
||||||
} else {
|
} else {
|
||||||
clearInterval(intervalId)
|
clearInterval(intervalId)
|
||||||
|
Reference in New Issue
Block a user