当前位置:首页 > VUE

vue实现登陆拦截

2026-01-20 14:34:40VUE

路由守卫实现登录拦截

在Vue项目中,可以通过路由守卫(Navigation Guards)实现登录拦截功能。路由守卫分为全局守卫、路由独享守卫和组件内守卫,通常使用全局前置守卫router.beforeEach进行登录验证。

// router/index.js
import router from './router'
import { getToken } from '@/utils/auth' // 假设有获取token的工具函数

router.beforeEach((to, from, next) => {
  const isLogin = getToken() // 检查是否存在token

  if (to.meta.requiresAuth && !isLogin) {
    next({
      path: '/login',
      query: { redirect: to.fullPath } // 记录跳转前的路由
    })
  } else {
    next()
  }
})

路由配置添加元信息

在路由配置中,通过meta字段标记需要登录验证的路由:

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

登录状态管理

建议使用Vuex集中管理登录状态,与路由守卫配合使用:

// store/modules/user.js
const state = {
  token: localStorage.getItem('token') || ''
}

const mutations = {
  SET_TOKEN(state, token) {
    state.token = token
    localStorage.setItem('token', token)
  },
  CLEAR_TOKEN(state) {
    state.token = ''
    localStorage.removeItem('token')
  }
}

登录跳转处理

在登录组件中处理登录成功后的跳转逻辑:

// Login.vue
methods: {
  handleLogin() {
    login(this.form).then(res => {
      this.$store.commit('SET_TOKEN', res.data.token)
      const redirect = this.$route.query.redirect || '/'
      this.$router.push(redirect)
    })
  }
}

白名单配置

对于无需登录的页面(如登录页、404页等),可以配置白名单优化验证逻辑:

const whiteList = ['/login', '/404']

router.beforeEach((to, from, next) => {
  if (whiteList.includes(to.path)) {
    return next()
  }
  // ...其他验证逻辑
})

响应拦截器配合

可以在axios响应拦截器中处理token过期情况:

service.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      store.commit('CLEAR_TOKEN')
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

vue实现登陆拦截

标签: vue
分享给朋友:

相关文章

vue实现倒计时

vue实现倒计时

Vue 实现倒计时的基本方法 使用 setInterval 和响应式数据 在 Vue 组件中定义一个响应式变量(如 countdown),通过 setInterval 每秒更新数值。组件销毁时清除定…

vue实现目录

vue实现目录

Vue 实现目录功能 在 Vue 中实现目录功能通常需要动态生成目录结构,并支持点击跳转到对应内容区域。以下是几种常见实现方式: 基于滚动监听和动态生成 安装依赖(如需): npm inst…

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现 安装…

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键词…

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-model…

vue  select实现

vue select实现

Vue Select 实现方法 在 Vue 中实现下拉选择功能可以使用原生 <select> 标签或第三方库如 vue-select。以下是两种方法的详细说明: 原生 HTML Sele…