当前位置:网站首页 > Vue.js开发 > 正文

vue路由守卫有几种(vue的路由守卫实现原理)



在这里插入图片描述

查看本专栏目录


关于作者


还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信,一起交流。

热门推荐 内容链接 1 openlayers 从基础到精通,300+代码示例 2 leaflet 热门分解学习教程,150+图文示例 3 cesium 从0到1学习指南,200+代码示例 4 mapboxGL 从入门到实战,150+图文示例 5 canvas 示例应用100+,揭密底层细节 6 javascript从基础到高级,示例展示200+ 7 vue2 实战指南,100+个细节深度剖析

在这里插入图片描述

在 Vue 中,可以通过路由守卫来实现路由鉴权。Vue 提供了三种路由守卫:全局前置守卫、全局解析守卫和组件内的守卫


在这里插入图片描述

通过 router.beforeEach() 方法实现,可以在路由跳转之前进行权限判断。在这个守卫中,可以根据用户的登录状态、角色等信息来判断用户是否有权限访问该路由。如果没有权限,则可以跳转到登录页面或者其他提示页面。

通过 router.beforeResolve() 方法实现,可以在路由解析之前进行权限判断。这个守卫可以用于处理异步路由加载的情况,确保在加载路由之前进行权限判断。

通过 beforeRouteEnter 、 beforeRouteUpdate 和 beforeRouteLeave 这三个钩子函数实现。这些守卫直接在组件内部定义,并且会在组件的路由导航过程中触发。可以用于执行一些与组件相关的逻辑,例如加载组件的数据、检查组件的状态等。

以下是一个示例代码,展示了如何使用全局前置守卫来限制未登录用户的访问:

 

在这个示例中,定义了一个全局前置守卫,使用 router.beforeEach() 方法来检查用户是否已登录。如果用户未登录,则导航到登录页面,否则允许继续导航。

这个示例展示了如何使用 router.beforeResolve() 方法进行权限判断:

 

在这个示例中,使用 router.beforeResolve() 方法定义了全局解析守卫。通过获取要进入的路由组件,并进行权限检查来确定用户是否有权访问该组件。如果有相应权限,就继续导航;否则,跳转到错误页面或执行其他操作

请注意,全局解析守卫在路由解析完成后触发,也就是在组件被加载之前。这意味着你可以在守卫中进行更复杂的权限检查,例如检查组件的特定属性或与服务器进行异步验证。

在 Vue.js 中,组件内守卫有三个: 。以下是一个示例代码,展示了如何使用这三种组件内守卫:

 

在上述示例中, beforeRouteEnter 守卫会在进入 About 组件时被调用。如果路由规则中设置了 isAuth 元数据并且本地存储中 school 的值为 atguigu ,则允许进入该组件;否则会弹出一个警告框。 beforeRouteLeave 守卫会在离开 About 组件时被调用,它只是简单地继续执行下一个路由。 beforeRouteUpdate 守卫会在组件被复用(例如从缓存中恢复)时被调用,它也只是简单地继续执行下一个路由。

请注意,上述示例代码中的 isAuth 元数据和 localStorage.getItem(‘school’) 是自定义的,你可以根据实际需求进行相应的修改。

到此这篇vue路由守卫有几种(vue的路由守卫实现原理)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • cjson库使用(cjson_createobject)2025-06-01 23:54:06
  • vuex安装 报错(vuecli安装不成功)2025-06-01 23:54:06
  • vue2生命周期函数(vue生命周期函数详解)2025-06-01 23:54:06
  • 安装node环境 vue npm(vue node modules安装)2025-06-01 23:54:06
  • map转jsonobject对象 gson(map转jsonstring)2025-06-01 23:54:06
  • spss27永久许可证代码(spss19.0许可证代码)2025-06-01 23:54:06
  • map变成json(map变成list)2025-06-01 23:54:06
  • vue2关闭eslint检测(vue取消eslint规范)2025-06-01 23:54:06
  • pcie5.0固态硬盘什么时候普及(pcie5.0什么时候上市)2025-06-01 23:54:06
  • pcie1.0速度(pcie1.0速度和Sata3.0那个快)2025-06-01 23:54:06
  • 全屏图片