当前位置:首页 > VUE

vue如何实现token失效

2026-01-20 18:20:58VUE

Vue 中实现 Token 失效处理的方案

在 Vue 应用中,Token 失效通常需要结合前端和后端的逻辑来实现。以下是几种常见的处理方式:

拦截请求响应

使用 Axios 的响应拦截器检测 Token 失效状态码(如 401),并统一处理跳转登录页或刷新 Token:

// axios 拦截器配置
axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      // 清除本地存储的 token
      localStorage.removeItem('token')
      // 跳转到登录页
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

定时检查 Token 过期

通过定时器检查 Token 的剩余有效期,提前刷新或提示用户:

// 检查 token 过期时间
function checkTokenExpiry() {
  const token = localStorage.getItem('token')
  if (token) {
    const decoded = jwtDecode(token) // 需要 jwt-decode 库
    const now = Date.now() / 1000
    if (decoded.exp < now) {
      // token 已过期处理
    }
  }
}
// 每 5 分钟检查一次
setInterval(checkTokenExpiry, 300000)

被动处理失效请求

当后端返回特定状态码时,执行 Token 失效逻辑:

async function fetchData() {
  try {
    const res = await axios.get('/api/data')
    return res.data
  } catch (error) {
    if (error.response.status === 401) {
      // 显示登录模态框或跳转
    }
  }
}

双 Token 机制

使用 access token 和 refresh token 组合方案:

// token 刷新函数
async function refreshToken() {
  try {
    const res = await axios.post('/refresh', {
      refreshToken: localStorage.getItem('refreshToken')
    })
    localStorage.setItem('token', res.data.accessToken)
    return res.data.accessToken
  } catch (error) {
    // 刷新失败跳转登录
    router.push('/login')
  }
}

路由守卫检查

通过 Vue Router 的全局前置守卫验证 Token:

vue如何实现token失效

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !localStorage.getItem('token')) {
    next('/login')
  } else {
    next()
  }
})

实现 Token 失效处理时,应根据具体业务需求选择合适的方式,通常需要组合多种方案来提供更好的用户体验。

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

相关文章

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标签…

vue实现vnc

vue实现vnc

Vue 实现 VNC 客户端 在 Vue 项目中实现 VNC 客户端功能,可以通过集成现有的 VNC 客户端库或组件完成。以下是具体实现方法: 安装依赖库 使用 noVNC 或其他 VNC 客户端…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue nexttick 实现

vue nexttick 实现

Vue nextTick 实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它主要用于确保在 DOM 更新完成后执行某些操作。 核心实现机制 ne…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…

vue实现反转

vue实现反转

实现数组反转 在Vue中反转数组可以通过多种方式实现,以下是几种常见方法: 使用JavaScript原生reverse方法 // 在methods中定义方法 methods: { revers…