当前位置:首页 > 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的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue实现datalist

vue实现datalist

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

vue实现ide

vue实现ide

Vue 实现 IDE 的基本思路 使用 Vue 构建一个简易的集成开发环境(IDE)需要整合代码编辑器、文件管理、终端模拟等功能。以下是关键实现步骤和推荐工具。 核心功能模块 代码编辑器 使用…

vue实现分站

vue实现分站

Vue 实现分站的方案 在 Vue 中实现分站功能通常涉及路由配置、环境变量管理和动态加载资源。以下是几种常见的实现方式: 基于路由的分站实现 通过 Vue Router 配置多路由,区分不同站点的…