feat: 关闭标签页/浏览器后强制重新登录——认证信息(token/username/realName/modules)改存 sessionStorage,目录记忆/备注草稿等偏好仍存 localStorage
6个文件已修改
38 ■■■■ 已修改文件
traffic-audit-web/src/api/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
traffic-audit-web/src/components/AppHeader.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
traffic-audit-web/src/main.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
traffic-audit-web/src/router/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
traffic-audit-web/src/views/Login.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
traffic-audit-web/src/views/ReportExport.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
    }
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(() => {})
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')
    }
  }
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 {
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) {
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')
    },
    // ==================== 查询条件与状态刷新 ====================