diff --git a/src/Login.vue b/src/Login.vue index 8455effb..19619264 100644 --- a/src/Login.vue +++ b/src/Login.vue @@ -77,7 +77,7 @@ export default { if (!this.$_.isEmpty(res.data.theme)) { localStorage.setItem(storageKey.theme, res.data.theme) } - res.loginSuccessPath = this.loginSuccessPath ? this.loginSuccessPath : localStorage.getItem(storageKey.tokenExpireCurrentPath) + res.loginSuccessPath = this.loginSuccessPath this.loginSuccess(res) localStorage.setItem(storageKey.username, this.username) } else if (res.code === 518005) { diff --git a/src/components/layout/Header.vue b/src/components/layout/Header.vue index 88cf7fcc..cdb27182 100644 --- a/src/components/layout/Header.vue +++ b/src/components/layout/Header.vue @@ -181,6 +181,7 @@ export default { this.showChangePin = true }, logout () { + sessionStorage.removeItem(storageKey.tokenExpireCurrentPath) localStorage.removeItem(storageKey.token) get(api.logout) }, diff --git a/src/permission.js b/src/permission.js index b728ae09..d49ce0f7 100644 --- a/src/permission.js +++ b/src/permission.js @@ -12,7 +12,7 @@ const permissionWhiteList = [...loginWhiteList, '/entityDetail'] // 权限白名 router.beforeEach(async (to, from, next) => { if (to.path.indexOf('/login') == -1) { - localStorage.setItem(storageKey.tokenExpireCurrentPath, to.fullPath) + sessionStorage.setItem(storageKey.tokenExpireCurrentPath, to.fullPath) } // 加载iso-3166-2资源 loadGeoData() @@ -46,7 +46,16 @@ router.beforeEach(async (to, from, next) => { } } else { if (loginWhiteList.indexOf(to.path) !== -1) { - next() + const tokenExpireCurrentPath = sessionStorage.getItem(storageKey.tokenExpireCurrentPath) + if (to.path === '/login' && tokenExpireCurrentPath) { + if (hasParam(to.fullPath, 'redirect')) { + next() + } else { + next({ path: '/login', query: { redirect: tokenExpireCurrentPath } }) + } + } else { + next() + } } else { next({ path: '/login', query: { redirect: to.fullPath } }) } @@ -69,6 +78,22 @@ export function hasMenu (menuList, route) { }) } +export function hasParam (url, param) { + let hasParam = false + let tempArr = url.split('?') + const query = {} + if (tempArr[1]) { + tempArr = tempArr[1].split('&') + tempArr.forEach(t => { + const kv = t.split('=') + if (kv[0] === param) { + hasParam = true + } + }) + } + return hasParam +} + export function hasButton (buttonList, code) { return buttonList.some(button => button === code) }