导航守卫分类
创始人
2024-05-24 10:04:11
0

导航守卫分类

全局导航守卫

  1. 统一登陆身份认证

    统一在 beforEach 判断身份

  2. 每次跳转都会触发
    from: 即将离开的路由
    to: 即将跳转到的路由
    next: 函数 next(),是否继续向下执行

  3. 单个路由独享导航守卫

  4. 组件内导航守卫

 全局前置导航守卫

router.beforeEach(): 前置守卫,初始化的时候被调用、每次路由器切换之前被调用
(这里的router 对应的是 new Router出来的对象)

注意:rou ter.beforeEach()内必须要调用next, 否则路由不会跳转;next()是默认跳到下一个;next( ‘/about’)、 next({ path: ‘/about’})是指定跳转到about

router.beforeEach(to,from,next)=>{
//执行代码
}
//实例
router.beforeEach((to, from, next) => {
// 白名单, 不需要登录认证的路由
let whiteArry = ["/login", "/"];
// 当前路由
if (whiteArry.indexOf(to.path) !== -1) {console.log("白名单, 不需要登录认证的路由");next(); //放行return;
}
// 登录身份认证
// let token = localStorage.getItem("Token");
let token = store.getters.token;
console.log("token ", token);
if (token) {//已经登录next();
}else{next("/login?redirect=1");
}
})

全局后置导航守卫

router.afterEach(): 后置守卫;(这里的router 对应的是 new Router出来的对象)

注意:router.afterEach() 没有 next 参数

//执行代码参照全局前置导航守卫
router.afterEach(to,from,next)=>{
//执行代码
}

2、路由独享守卫  就是某一个路由单独享有的路由守卫
只存在beforeEnter,不存在afterEnter

如果想实现路由组件的to属性添加自定义属性用于权限判断,必须放在meta元数据属性中,meta就是用来存放自定义属性的,比如代码中的to.meta.isAuth,其中isAuth就是用来判断当前路由组件是否用于授权校验。

beforeRouteEnter (to, from, next) {console.log('About--beforeRouteEnter',to,from)if(to.meta.isAuth){ //判断是否需要鉴权if(localStorage.getItem('school')==='atguigu'){next()}else{alert('暂无权限查看!')}}else{next()}},
{path: '/about',name: 'about',meta: {title: '关于'},component: () => import('../views/about.vue'),beforeEnter: (to, from, next) => {console.log('进入about之前调用')next()}},

3、组件内的守卫

在组件内部
//通过路由规则,进入该组件时被调用beforeRouteEnter (to, from, next) {console.log('About--beforeRouteEnter',to,from)if(to.meta.isAuth){ //判断是否需要鉴权if(localStorage.getItem('school')==='atguigu'){next()}else{alert('学校名不对,无权限查看!')}}else{next()}},//通过路由规则,离开该组件时被调用beforeRouteLeave (to, from, next) {console.log('About--beforeRouteLeave',to,from)next()}

组件内路由守卫,就是在单个组件内定义些路由守卫的东西。指代进入该组件和离开该组件时使用,强调“进入和离开”的动作,而全局路由守卫才强调“前置和后置”的动作。

全局路由守卫的前置/后置,都会执行,而组件内路由守卫beforeRouteEnter一定会执行,但如果不离开,那么beforeRouteLeave就不会执行。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...