当前位置:首页 > 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 CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

实现vue table

实现vue table

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以快速渲染表格数据。在模板中定义表格结构,通过数据绑定动态生成行和列。 <template> <tabl…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…

vue 实现后退

vue 实现后退

实现后退功能的方法 在Vue中实现后退功能通常需要结合浏览器历史记录API或Vue Router的导航方法。以下是几种常见的实现方式: 使用Vue Router的go方法 this.$rout…

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放功能 在 Vue 中实现音乐播放功能,可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是两种方法的详细步骤: 使用 HT…