当前位置: 首页 > news >正文

路由守卫的常见案例使用方式

## **路由守卫(登录权限检查=路由拦截器)**

作用:**用户访问页面时,先检查有没有登录、登录有没有过期,没登录就自动踢去登录页**。

​ 在**跳转页面之前**,先执行一段逻辑,决定:

- 放行:正常进页面
- 拦截:跳转到登录页 / 首页 / 404
- 终止:不让跳转

最常用的:**全局前置守卫**。必须调用 `next()`,否则页面卡住不动

## 常用案例

### 案例1:基础登录拦截

需求:带 `requiresAuth: true` 的页面必须登录

router.beforeEach((to, from, next) => { const token = localStorage.getItem('access_token') // 需要登录 if (to.meta.requiresAuth) { if (!token) { return next('/login') } } // 不需要登录 或 已登录 直接放行 next() })

### 案例2:白名单模式(登录页不用拦截)

需求:登录页、注册页永远不需要登录,其他需要

router.beforeEach((to, from, next) => { const token = localStorage.getItem('access_token') // 白名单 const whiteList = ['/login', '/register'] if (whiteList.includes(to.path)) { return next() } // 不在白名单且没登录 → 跳登录 if (!token) { return next('/login') } next() })

### 案例3:已登录禁止再进登录页

需求:已经登录了,再访问 `/login` 自动跳首页

router.beforeEach((to, from, next) => { const token = localStorage.getItem('access_token') // 已登录还去登录页 → 强制跳首页 if (to.path === '/login' && token) { return next('/projects') } next() })

### 案例4:JWT 自动校验过期```

router.beforeEach((to, from, next) => { const token = localStorage.getItem('access_token') if (to.meta.requiresAuth) { if (!token) return next('/login') try { // 解析 jwt 过期时间 const payload = JSON.parse(atob(token.split('.')[1])) // 已过期 if (payload.exp * 1000 < Date.now()) { localStorage.removeItem('access_token') return next('/login') } } catch (err) { // token 格式错误 localStorage.removeItem('access_token') return next('/login') } } next() })

### 案例5:角色权限控制(管理员才能进)

路由配置加元信息:

{ path: '/admin', meta: { requiresAuth: true, role: 'admin' } }

导航守卫判断:

router.beforeEach((to, from, next) => { const token = localStorage.getItem('access_token') const userRole = localStorage.getItem('role') if (to.meta.requiresAuth) { if (!token) return next('/login') // 需要管理员权限,但用户不是管理员 if (to.meta.role && to.meta.role !== userRole) { return next('/404') } } next() })

## 配合路由 meta 用法规则

在路由项里配置:

{ path: '/projects', name: 'ProjectList', component: () => import('@/views/ProjectListView.vue'), meta: { requiresAuth: true, // 是否需要登录 title: '项目列表', // 页面标题 role: 'admin' // 所需角色 } }

靠 `to.meta` 给路由打标记,守卫统一判断

http://www.jsqmd.com/news/812492/

相关文章:

  • 电子产业生态的沉默基石:全球供应链中精密制造与人力价值再思考
  • 2026年热门生鲜店收银软件:选型指南与场景化优势解析
  • 2026年Q2广西研磨机采购指南:为何裕长鑫建机成为首选供应商? - 2026年企业推荐榜
  • 图片换背景底色怎么制作?一款微信小程序让你3步搞定
  • 开源图书管理系统OpenClaw-Book:基于Vue与Spring Boot的轻量级解决方案
  • 3步解锁百度网盘Mac版高速下载:逆向工程实践指南
  • PS2游戏二进制重编译:从MIPS到x86的静态分析与动态优化实践
  • 2026年梅花联轴器选型TOP5推荐:梅花联轴器、碳纤维联轴器、耐腐蚀螺丝、膜片联轴器、真空螺丝选择指南 - 优质品牌商家
  • 3分钟掌握Figma转JSON:设计师与开发者的终极协作指南
  • 半导体产业模式之争:IDM与代工在先进制程下的博弈与融合
  • 5分钟搞定VRoid Studio中文界面:汉化插件完全使用指南
  • QQ音乐加密音频格式解码技术方案与实践指南
  • Deep Agents:开箱即用的AI智能体框架,快速构建自主规划与执行应用
  • 反弹 shell 的工作原理是什么?
  • 大恒相机USB3驱动冲突排查:设备管理器可见但软件无法识别的深度解析
  • 2026清镇不压价奢侈品回收TOP5:清镇二手手表回收/清镇包包回收/清镇名表回收/清镇奢侈品回收/清镇白银回收/选择指南 - 优质品牌商家
  • VLC for Android:如何用开源技术重新定义你的移动观影体验?
  • ARM ERR<n>STATUS寄存器解析与错误处理实践
  • USGv6新规驱动IPv6单栈部署:从协议原理到实战测试的全面指南
  • 免费抠图软件一键抠图无水印有哪些?2026年最实用工具对比测试
  • 单目3D感知AI:低成本实现车载舱内智能交互的核心技术
  • 010、Park变换原理与推导
  • 基于物联网的泵车远程运维与主动服务解决方案
  • 观察在虚拟机内使用Taotoken调用API的延迟与稳定性表现
  • Jenkins CI/CD 自动化部署流水线
  • AI 时代远程加密勒索软件防御机理研究 —— 基于数据层数学检测视角
  • 全球轻型巡飞弹药行业发展现状、机遇与前景分析
  • PromptScript Registry:统一AI编程助手配置,提升开发效率与代码一致性
  • for语句
  • 同一个大模型,CodeBuddy 和 Trae 出来效果不一样?原因在这!