431 字
1 分钟
路由守卫:你是谁?你去哪?有通行证吗?
前端的保安:Vue Router
做单页应用(SPA),路由管理是绕不开的一环。而“路由守卫”(Navigation Guards)则是其中最精彩(也最容易出 Bug)的部分。
全局前置守卫:beforeEach
这就好比小区门口的保安大爷,不管你是谁,进门先查证。
router.beforeEach((to) => { if (to.name !== 'Login' && !isAuthenticated) { return { name: 'Login' } }})看起来逻辑天衣无缝?只要没登录,就踢回登录页。但是!如果你的逻辑写得稍微有一点漏洞,就会陷入无限循环。
比如,你忘记判断 to.name !== 'Login',那么用户被重定向到 Login 页,再次触发 beforeEach,再次重定向……浏览器直接卡死,你也懵逼了。旧式的 next 参数仍受支持,但每条逻辑路径都必须且只能调用一次,直接返回目标路由更不容易写错。
组件内的守卫
beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave。这些钩子函数让我们可以精确控制组件级的路由行为。
- beforeRouteEnter:在渲染该组件的对应路由被 confirm 前调用。注意!此时组件实例还没被创建,所以你不能用
this!这又是 Vue 新手的一大坑。 - beforeRouteLeave:通常用来禁止用户在未保存修改前突然离开。
遇到的困难与思考
路由守卫不能替代后端鉴权:后端仍要验证 Token 和资源权限,前端守卫负责提前拦截无权限页面、保存未提交状态或补齐跳转上下文。两边职责不同,不能因为已经用了 JWT 就把其中一边省掉。

分享
如果这篇文章对你有帮助,欢迎分享给更多人!
路由守卫:你是谁?你去哪?有通行证吗?
https://blog.luozili.work/posts/vue-learning-3/ 部分信息可能已经过时
相关文章 智能推荐
1
Vue 3 启航
Vue学习之路 从 jQuery 时代的回忆出发,记录第一次系统学习 Vue 3、Vite 与组合式 API 的过程。
2
TypeScript:给代码穿上防弹衣 (虽然很重)
Vue学习之路 从一串类型报错出发,记录 Vue 3 项目接入 TypeScript 后的学习成本、常见问题和实际收益。
3
样式设计:CSS 也就是随便写写... (并没有)
Vue学习之路 记录 Vue 单文件组件中 scoped CSS、深度选择器、CSS Modules 与响应式布局的实践和踩坑。
4
生命周期钩子:生老病死,Vue 组件的一生
Vue学习之路 按创建、挂载、更新和卸载阶段梳理 Vue 3 组件生命周期,以及各类钩子的典型使用场景。
5
Vite:快!太快了!由于速度太快我跟不上了
Vue学习之路 记录 Vite 开发服务器的速度优势,以及生产构建、依赖预构建、路径和插件兼容问题带来的反差。





