当前位置:首页 > VUE

vue如何实现token失效

2026-01-20 18:20:58VUE

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

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

拦截请求响应

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

vue如何实现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 失效逻辑:

vue如何实现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
分享给朋友:

相关文章

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm insta…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…