当前位置:首页 > VUE

vue实现拦截登录

2026-01-08 06:23:34VUE

Vue 实现登录拦截的方法

使用路由守卫进行拦截

Vue Router 提供了全局前置守卫 beforeEach,可以在路由跳转前进行验证。在路由配置文件中添加以下代码:

import router from './router'
import { getToken } from './utils/auth'

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

定义路由元信息

在路由配置中,为需要登录才能访问的页面添加 meta 字段:

vue实现拦截登录

const routes = [
  {
    path: '/dashboard',
    component: Dashboard,
    meta: { requiresAuth: true }
  },
  {
    path: '/login',
    component: Login
  }
]

实现 Token 验证

创建一个 auth.js 工具文件,用于处理 Token 的存储和获取:

const TOKEN_KEY = 'vue_admin_token'

export function getToken() {
  return localStorage.getItem(TOKEN_KEY)
}

export function setToken(token) {
  localStorage.setItem(TOKEN_KEY, token)
}

export function removeToken() {
  localStorage.removeItem(TOKEN_KEY)
}

登录成功后设置 Token

在登录组件中,成功登录后调用 setToken 方法:

vue实现拦截登录

import { setToken } from '../utils/auth'

methods: {
  handleLogin() {
    login(this.loginForm).then(response => {
      setToken(response.data.token)
      this.$router.push('/dashboard')
    })
  }
}

响应拦截器处理 Token 过期

在 axios 的响应拦截器中处理 Token 过期的情况:

import axios from 'axios'
import { removeToken } from './auth'

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

退出登录处理

在退出登录时清除 Token 并跳转到登录页:

import { removeToken } from '../utils/auth'

methods: {
  logout() {
    removeToken()
    this.$router.push('/login')
  }
}

通过以上方法可以实现 Vue 应用的登录拦截功能,确保未登录用户无法访问受保护的路由。

标签: vue
分享给朋友:

相关文章

vue的实现原理

vue的实现原理

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。 响应式系统 Vue 使用 Object.definePr…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…

vue实现grid

vue实现grid

Vue 实现 Grid 布局的方法 使用 CSS Grid 布局 Vue 可以结合 CSS Grid 布局实现灵活的网格系统。CSS Grid 是现代浏览器原生支持的布局方案,无需额外依赖库。 &…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue实现异步

vue实现异步

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

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…