当前位置:首页 > VUE

vue如何实现登录拦截

2026-02-22 19:40:55VUE

实现登录拦截的方法

在Vue中实现登录拦截通常通过路由守卫(Navigation Guards)完成,结合全局前置守卫和本地存储(如localStorage)来验证用户登录状态。

使用路由守卫进行拦截

在Vue Router中,可以通过beforeEach方法设置全局前置守卫,检查用户是否已登录。如果未登录,则跳转到登录页面。

// router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/views/Login.vue'
import Home from '@/views/Home.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    { path: '/login', component: Login },
    { path: '/home', component: Home, meta: { requiresAuth: true } }
  ]
})

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

export default router

结合本地存储验证登录状态

用户登录成功后,将token或其他认证信息存储在本地(如localStorage),后续请求时通过该信息判断登录状态。

// 登录成功后存储token
localStorage.setItem('token', 'your-auth-token')

处理HTTP请求拦截

在axios等HTTP请求库中设置请求拦截器,确保每次请求都携带认证信息(如token)。

// utils/axios.js
import axios from 'axios'

const instance = axios.create({
  baseURL: 'https://api.example.com'
})

instance.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, error => {
  return Promise.reject(error)
})

export default instance

处理未登录的API响应

通过响应拦截器检查API返回的状态码,若发现未授权(如401),则清除本地存储并跳转到登录页。

instance.interceptors.response.use(response => {
  return response
}, error => {
  if (error.response.status === 401) {
    localStorage.removeItem('token')
    router.push('/login')
  }
  return Promise.reject(error)
})

动态路由与权限控制

对于需要更细粒度权限控制的场景,可以通过动态路由和角色验证实现。登录后根据用户角色加载对应的路由配置。

// 根据用户角色动态加载路由
function loadRoutesBasedOnRole(role) {
  const routes = []
  if (role === 'admin') {
    routes.push({ path: '/admin', component: AdminPanel })
  }
  router.addRoutes(routes)
}

通过以上方法,可以实现在Vue应用中对未登录用户的拦截和权限控制。

vue如何实现登录拦截

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

相关文章

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class…

vue实现框选

vue实现框选

Vue 实现框选功能 在 Vue 中实现框选功能通常需要监听鼠标事件,计算选区范围,并根据选区范围高亮或选中元素。以下是实现框选功能的关键步骤。 监听鼠标事件 在 Vue 模板中,为容器元素绑定鼠标…

vue实现例子

vue实现例子

以下是一些常见的 Vue 实现例子,涵盖基础功能到进阶应用场景: 基础数据绑定 使用 v-model 实现双向数据绑定: <template> <div>…

vue实现layout

vue实现layout

Vue 实现 Layout 布局的方法 在 Vue 中实现 Layout 布局通常涉及路由嵌套、组件化设计和动态渲染。以下是几种常见的实现方式: 使用嵌套路由 通过 Vue Router 的嵌套路…