当前位置:首页 > VUE

vue实现重登陆

2026-02-21 20:49:24VUE

Vue 实现重新登录功能

重新登录功能通常用于会话过期或权限变更后,要求用户重新验证身份。以下是实现方案:

方案一:基于路由守卫的全局控制

在路由配置中设置全局前置守卫,检测登录状态失效时跳转登录页:

// router/index.js
router.beforeEach((to, from, next) => {
  const isAuthenticated = checkAuth() // 自定义认证检查方法
  if (to.meta.requiresAuth && !isAuthenticated) {
    next({
      path: '/login',
      query: { redirect: to.fullPath }
    })
  } else {
    next()
  }
})

方案二:响应拦截器处理

vue实现重登陆

在axios拦截器中捕获401未授权状态,触发重新登录流程:

// utils/request.js
instance.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      store.dispatch('user/clearToken')
      router.push('/login?redirect=' + encodeURIComponent(router.currentRoute.fullPath))
    }
    return Promise.reject(error)
  }
)

方案三:集中式状态管理

通过Vuex管理登录状态,提供强制登出方法:

vue实现重登陆

// store/modules/user.js
actions: {
  forceLogout({ commit }) {
    commit('CLEAR_TOKEN')
    router.push({
      path: '/login',
      query: { redirect: router.currentRoute.fullPath }
    })
  }
}

方案四:Token自动刷新

对于JWT等token机制,可实现静默刷新:

// utils/auth.js
function refreshToken() {
  return axios.post('/auth/refresh').then(res => {
    setNewToken(res.data.token)
    return true
  }).catch(() => {
    clearToken()
    return false
  })
}

注意事项

  • 登录跳转时应携带当前路由作为redirect参数,便于登录后返回原页面
  • 清除所有敏感数据包括Vuex中的用户信息和本地存储的token
  • 对于敏感操作应设置二次验证机制
  • 考虑添加会话过期前的倒计时提醒功能

完整示例代码

// 强制重新登录方法示例
function forceReLogin() {
  localStorage.removeItem('token')
  sessionStorage.clear()
  this.$store.commit('RESET_STATE')
  this.$router.push({
    path: '/login',
    query: {
      reason: 'session_expired',
      redirect: this.$route.fullPath
    }
  })
}

标签: vue
分享给朋友:

相关文章

vue循环数组实现

vue循环数组实现

vue循环数组的实现方法 在Vue中循环数组主要通过v-for指令实现,以下是几种常见用法: 基本数组循环 使用v-for指令遍历数组,可以通过(item, index)的语法获取当前项和索引值:…

vue中如何实现循环

vue中如何实现循环

在 Vue 中实现循环 Vue 提供了 v-for 指令用于实现循环渲染列表数据。v-for 可以遍历数组、对象或数字范围,生成动态的 DOM 元素。 遍历数组 使用 v-for 遍历数组时,语法为…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…

vue实现摘要

vue实现摘要

Vue 实现摘要的方法 在 Vue 中实现文本摘要功能通常涉及截取文本的前部分内容并添加省略号。可以通过计算属性、过滤器或自定义指令来实现。 计算属性实现 在 Vue 组件中定义一个计算属性,用于截…

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <div…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…