当前位置:首页 > VUE

vue如何实现登录失效

2026-01-21 07:18:38VUE

Vue 实现登录失效处理

使用 axios 拦截器检测登录失效

在 axios 的响应拦截器中检查返回状态码,当检测到 401 未授权状态时跳转到登录页。

// axios 拦截器配置
import axios from 'axios'
import router from './router'

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

结合路由守卫进行全局验证

在路由全局前置守卫中检查用户登录状态,当 token 失效时重定向到登录页面。

// router.js
router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!localStorage.getItem('token')) {
      next({
        path: '/login',
        query: { redirect: to.fullPath }
      })
    } else {
      next()
    }
  } else {
    next()
  }
})

定时检查 token 有效性

设置定时器定期检查 token 是否即将过期,提前刷新或提示用户重新登录。

vue如何实现登录失效

// token 检查函数
function checkTokenExpiration() {
  const token = localStorage.getItem('token')
  const expiresAt = localStorage.getItem('expires_at')

  if (!token || new Date().getTime() > expiresAt) {
    localStorage.removeItem('token')
    localStorage.removeItem('expires_at')
    router.push('/login')
  }
}

// 每5分钟检查一次
setInterval(checkTokenExpiration, 300000)

后端配合返回明确状态

确保后端 API 在 token 失效时返回明确的 401 状态码,前端根据该状态码进行统一处理。

用户友好的提示信息

当检测到登录失效时,显示友好的提示信息而非直接跳转。

vue如何实现登录失效

// 使用 Element UI 提示
import { Message } from 'element-ui'

if (error.response.status === 401) {
  Message.error('登录已过期,请重新登录')
  router.push('/login')
}

自动刷新 token 机制

在 token 即将过期时自动刷新,避免频繁要求用户重新登录。

// token 刷新逻辑
function refreshToken() {
  return axios.post('/auth/refresh', {
    refresh_token: localStorage.getItem('refresh_token')
  }).then(response => {
    localStorage.setItem('token', response.data.token)
    localStorage.setItem('expires_at', response.data.expires_at)
  })
}

登出时清理数据

用户主动登出或检测到登录失效时,清理本地存储的认证信息。

function logout() {
  localStorage.removeItem('token')
  localStorage.removeItem('refresh_token')
  localStorage.removeItem('expires_at')
  router.push('/login')
}

标签: 如何实现vue
分享给朋友:

相关文章

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr.…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…