首页 > 其他分享 >vue:路由守卫

vue:路由守卫

时间:2023-04-01 13:22:37浏览次数:34  
标签:vue title next 守卫 meta 权限 路由

路由守卫

  1. 作用:对路由进行权限控制

    配置路由守卫应在暴露前配置

  2. 分类:全局守卫、独享守卫、组件内守卫

首先先给需要鉴权的路由设置好meta配置项。

meta配置项:是vue-router中的一个对象,主要用于存储路由的元数据(meta data)信息。这些元数据信息可以是一些描述性的内容,比如页面的标题、关键词、描述等,也可以是一些业务相关的参数或标识,比如是否需要登录、权限等级等。

{
    name: 'zhuye',
    path: '/home',
    component: Home,
    children: [
        {
            name: 'xinwen',
            path: 'news',
            component: News,
            //isAuth是否需要身份验证,title设置网页标题
            meta: { isAuth: true, title:'新闻' }	
        },
           ]
        }
    ]
}

全局守卫:

beforeEach是Vue Router中的一个钩子函数,用于在路由切换前执行一些操作。可以利用beforeEach钩子函数实现某些全局的路由拦截控制。

beforeEach接收3个参数: to:要跳转的目标路由对象,from:当前导航正要离开的路由,next:调用该方法后,表示进入下一个路由

//全局前置守卫:初始化时执行、每次路由切换前执行
router.beforeEach((to,from,next)=>{
	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
		if(localStorage.getItem('school') === 'atguigu'){ //权限控制的具体规则
			next() //放行
		}else{
			alert('暂无权限查看')
		}
	}else{
		next() //放行
	}
})

afterEach是Vue Router中的一个钩子函数,用于在路由完成跳转后执行一些操作。可以利用afterEach钩子函数实现某些全局的路由跳转后的处理

afterEach方法接收2个参数:to:成功跳转的目标路由对象。from:当前导航正要离开的路由

//全局后置守卫:初始化时执行、每次路由切换后执行
router.afterEach((to,from)=>{
	if(to.meta.title){ 
		document.title = to.meta.title //修改网页的title
	}else{
		document.title = 'vue_test'
	}
})

独享守卫:

可以让某个路由及其所有子路由独享一个路由守卫。这个路由守卫与全局前置守卫beforeEach相似,但是只作用于该路由及其子路由。

beforeEnter(to,from,next){
	if(to.meta.isAuth){ //判断当前路由是否需要进行权限控制
		if(localStorage.getItem('school') === 'atguigu'){
			next()
		}else{
			alert('暂无权限查看')
		}
	}else{
		next()
	}
}

组件内守卫

在组件内部使用Vue Router提供的路由守卫来控制组件的进入、离开、更新等操作。

//进入守卫:通过路由规则,进入该组件时被调用
beforeRouteEnter (to, from, next) {
     ...     //里面的配置和前面差不多
},
//离开守卫:通过路由规则,离开该组件时被调用
beforeRouteLeave (to, from, next) {
     ...
}

标签:vue,title,next,守卫,meta,权限,路由
From: https://www.cnblogs.com/OneLamb/p/17278460.html

相关文章

  • 小米路由器3C刷入Breed和OpenWrt
    本文链接:https://www.cnblogs.com/snoopy1866/p/17278237.html准备工具:小米路由器3C(R3L)、网线、电脑准备软件:Xshell教程中使用到的文件均打包保存在:https://wwpe.lanzoub.com/ibnVl0rqr09a教程参考了以下多位大佬的帖子:https://www.right.com.cn/forum/forum.php?mod=viewthr......
  • Vue引用富文本编辑器
    1.在package.json加上并安装依赖"devDependencies":{"@jsdawn/vue3-tinymce":"^1.1.7",}2.在页面中引入importVue3Tinymcefrom"@jsdawn/vue3-tinymce";3.使用<vue3-tinymcev-model="item.blockDataObj.text":setting=&qu......
  • 第二十二篇 vue - 深入组件 - 异步组件 - defineAsyncComponent
    基本用法defineAsyncComponent在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。Vue提供了defineAsyncComponent方法来实现此功能import{defineAsyncComponent}from'vue'constAsyncComp=defineAsyncComponent(()=>{returnn......
  • 第二十四篇 vue - 深入组件 - 内置组件 - TransitionGroup
    TransitionGroup<TransitionGroup>是一个内置组件,用于对v-for列表中的元素或组件的插入、移除和顺序改变添加动画效果和的区别<TransitionGroup>支持和<Transition>基本相同的props、CSS过渡class和JavaScript钩子监听器,但有以下几点区别:默认情况下,它不会渲染......
  • 第二十三篇 vue - 深入组件 - 内置组件 - Transition
    动画组件Transition和TransitionGroupVue提供了两个可以帮助你制作基于状态变化的过渡和动画内置组件1、<Transition>会在一个元素或组件进入和离开DOM时应用动画2、<TransitionGroup>会在一个v-for列表中的元素或组件被插入,移动,或移除时应用动画除了这两个组件,我......
  • 第二十五篇 vue - 深入组件 - 内置组件 - keepAlive
    keepAlive<KeepAlive>是一个内置组件,它的功能是在多个组件间动态切换时缓存被移除的组件实例在平常开发中,有部分组件没有必要多次初始化,这时,我们需要将组件进行持久化,使组件的状态维持不变,在下一次展示时,也不会进行重新初始化组件kee-alive是Vue内置的一个组件,可以使被包含......
  • 第二十七篇 vue - 深入组件 - 内置组件 - Suspense
    Suspense<Suspense>是一个内置组件,用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异步依赖项解析完成,并可以在等待时渲染一个加载状态<Suspense>是一项实验性功能。它不一定会最终成为稳定功能,并且在稳定之前相关API也可能会发生变化异......
  • 第二十六篇 vue - 深入组件 - 内置组件 - Teleport
    Teleport<Teleport>是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的DOM结构外层的位置去基本用法有时我们可能会遇到这样的场景:一个组件模板的一部分在逻辑上从属于该组件,但从整个应用视图的角度来看,它在DOM中应该被渲染在整个Vue应用外部的其他地方......
  • 第二十八篇 vue - 深入组件 - 动态组件 - component
    component动态组件就是动态变化的组件,和动态样式一样,通过用户的操作来确定是什么类型的组件。动态样式是绑定:style,动态组件则是绑定:is在vue中,实现Tab切换主要有三种方式:使用动态组件,使用vue-router路由,使用第三方插件。本文将详细介绍Vue动态组件所谓动态组件就是让多......
  • [vue3]npm创建环境
    1.npm安装vuecli[root@Python20230401VUE3]#npminstall-g@vue/cli2.查看vue版本[root@Python20230401VUE3]#vue--version@vue/cli5.0.83.创建项目[root@Python20230401VUE3]#vuecreatehello-world4.执行项目$cdhello-world$npmrunserve......