From c62a61cfdba5cf60f59e7e79432150e479155da4 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期一, 31 八月 2026 09:01:12 +0800
Subject: [PATCH] feat: 关闭标签页/浏览器后强制重新登录——认证信息(token/username/realName/modules)改存 sessionStorage,目录记忆/备注草稿等偏好仍存 localStorage
---
traffic-audit-web/src/views/ReportExport.vue | 8 ++++----
traffic-audit-web/src/router/index.js | 2 +-
traffic-audit-web/src/views/Login.vue | 8 ++++----
traffic-audit-web/src/main.js | 8 ++++----
traffic-audit-web/src/api/index.js | 4 ++--
traffic-audit-web/src/components/AppHeader.vue | 8 +++++---
6 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/traffic-audit-web/src/api/index.js b/traffic-audit-web/src/api/index.js
index bc8a6c6..1a262c1 100644
--- a/traffic-audit-web/src/api/index.js
+++ b/traffic-audit-web/src/api/index.js
@@ -7,7 +7,7 @@
})
api.interceptors.request.use(config => {
- const token = localStorage.getItem('token')
+ const token = sessionStorage.getItem('token')
if (token) config.headers.Authorization = 'Bearer ' + token
return config
})
@@ -16,7 +16,7 @@
response => response.data,
error => {
if (error.response && error.response.status === 401) {
- localStorage.removeItem('token')
+ sessionStorage.removeItem('token')
window.location.href = '/login'
return Promise.reject(error)
}
diff --git a/traffic-audit-web/src/components/AppHeader.vue b/traffic-audit-web/src/components/AppHeader.vue
index 09eb2bb..f4e1b04 100644
--- a/traffic-audit-web/src/components/AppHeader.vue
+++ b/traffic-audit-web/src/components/AppHeader.vue
@@ -20,7 +20,7 @@
},
computed: {
username() {
- return localStorage.getItem('username') || 'admin'
+ return sessionStorage.getItem('username') || 'admin'
}
},
methods: {
@@ -30,8 +30,10 @@
cancelButtonText: '鍙栨秷',
type: 'warning'
}).then(() => {
- localStorage.removeItem('token')
- localStorage.removeItem('username')
+ sessionStorage.removeItem('token')
+ sessionStorage.removeItem('username')
+ sessionStorage.removeItem('realName')
+ sessionStorage.removeItem('modules')
this.$message.success('宸查��鍑虹櫥褰�')
this.$router.push('/login')
}).catch(() => {})
diff --git a/traffic-audit-web/src/main.js b/traffic-audit-web/src/main.js
index 6ff9576..7aea668 100644
--- a/traffic-audit-web/src/main.js
+++ b/traffic-audit-web/src/main.js
@@ -11,10 +11,10 @@
Vue.mixin({
methods: {
logout() {
- localStorage.removeItem('token')
- localStorage.removeItem('username')
- localStorage.removeItem('realName')
- localStorage.removeItem('modules')
+ sessionStorage.removeItem('token')
+ sessionStorage.removeItem('username')
+ sessionStorage.removeItem('realName')
+ sessionStorage.removeItem('modules')
this.$router.push('/login')
}
}
diff --git a/traffic-audit-web/src/router/index.js b/traffic-audit-web/src/router/index.js
index 0971ecf..6316dc6 100644
--- a/traffic-audit-web/src/router/index.js
+++ b/traffic-audit-web/src/router/index.js
@@ -19,7 +19,7 @@
})
router.beforeEach((to, from, next) => {
- const token = localStorage.getItem('token')
+ const token = sessionStorage.getItem('token')
if (to.path === '/login') {
next(token ? '/dashboard' : undefined)
} else {
diff --git a/traffic-audit-web/src/views/Login.vue b/traffic-audit-web/src/views/Login.vue
index f7dc1a7..19ca936 100644
--- a/traffic-audit-web/src/views/Login.vue
+++ b/traffic-audit-web/src/views/Login.vue
@@ -79,10 +79,10 @@
this.loggingIn = false
const d = res.data
if (d.code === 200) {
- localStorage.setItem('token', d.data.token)
- localStorage.setItem('username', d.data.username)
- localStorage.setItem('realName', d.data.realName || '')
- localStorage.setItem('modules', d.data.modules || '')
+ sessionStorage.setItem('token', d.data.token)
+ sessionStorage.setItem('username', d.data.username)
+ sessionStorage.setItem('realName', d.data.realName || '')
+ sessionStorage.setItem('modules', d.data.modules || '')
this.$message.success('鐧诲綍鎴愬姛')
this.$router.push('/dashboard')
} else if (d.code === 401) {
diff --git a/traffic-audit-web/src/views/ReportExport.vue b/traffic-audit-web/src/views/ReportExport.vue
index c7935b4..2530d22 100644
--- a/traffic-audit-web/src/views/ReportExport.vue
+++ b/traffic-audit-web/src/views/ReportExport.vue
@@ -211,10 +211,10 @@
}
},
computed: {
- username() { return localStorage.getItem('username') || '' },
- realName() { return localStorage.getItem('realName') || '' },
+ username() { return sessionStorage.getItem('username') || '' },
+ realName() { return sessionStorage.getItem('realName') || '' },
myModules() {
- const s = localStorage.getItem('modules')
+ const s = sessionStorage.getItem('modules')
if (!s) return []
return s.split(',').filter(Boolean)
},
@@ -264,7 +264,7 @@
return m ? m.title : key
},
logout() {
- localStorage.removeItem('token'); localStorage.removeItem('username'); localStorage.removeItem('realName'); localStorage.removeItem('modules')
+ sessionStorage.removeItem('token'); sessionStorage.removeItem('username'); sessionStorage.removeItem('realName'); sessionStorage.removeItem('modules')
this.$router.push('/login')
},
// ==================== 鏌ヨ鏉′欢涓庣姸鎬佸埛鏂� ====================
--
Gitblit v1.9.1