当前位置:首页 > 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:

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

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

vue如何实现token失效

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

相关文章

vue实现atm

vue实现atm

Vue实现ATM机模拟功能 使用Vue.js实现ATM机模拟功能需要结合组件化开发、状态管理以及用户交互逻辑。以下是关键实现步骤: 核心组件结构 创建以下Vue组件构建ATM界面: Car…

项目基于vue实现

项目基于vue实现

基于Vue实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要…

vue实现a

vue实现a

Vue 实现 A 功能的方法 在 Vue 中实现 A 功能可以通过多种方式,具体取决于 A 功能的具体需求。以下是几种常见的实现方法: 使用 Vue 组件 通过创建自定义组件来实现 A 功能。组件…

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="clock…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…