首页 > 其他分享 >VueRouter笔记 - 路由守卫

VueRouter笔记 - 路由守卫

时间:2022-11-11 20:24:25浏览次数:85  
标签:调用 next 守卫 VueRouter 组件 全局 路由

路由守卫

目录

1. 路由守卫简介

  • 路由守卫主要用来通过跳转或取消的方式守卫路由。常用于用户权限管理,可以阻止权限不足的用户进入某些页面
  • 完整的导航解析流程
    1. 导航被触发。
    2. 在失活的组件里调用 beforeRouteLeave 守卫。
    3. 调用全局的 beforeEach 守卫。
    4. 在路由配置里调用 beforeEnter
    5. 解析异步路由组件。
    6. 在被激活的组件里调用 beforeRouteEnter
    7. 导航被确认。
    8. 调用全局的 afterEach 钩子。
    9. 触发 DOM 更新。
    10. 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。

2. 全局前置守卫

  • 可以使用 router.beforeEach 注册一个全局前置守卫。全局前置路由守卫会在初始化的时候被调用,在每次路由切换之前被调用

    const router = new VueRouter({ ... })
    
    router.beforeEach((to, from, next) => {
      if(to.name === 'news' || to.name === 'message'){
          if(localStorage.getItem('school') === 'daiojd'){
              next()
          }else{
              alert('学校名不对,无权查看')
          }
      }else{
          next()
      }
    })
    
  • 守卫方法接受三个参数:

    • to: Route: 即将要进入的路由对象目标
    • from: Route: 当前导航正要离开的路由
    • next: Function:
      • next(): 进行管道中的下一个钩子,一般跳转到to指向的路径
      • next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
      • next({ path: '/' }): 跳转到一个不同的地址,该对象同样允许设置诸如 replace: truename: 'home' 之类的选项。当前的导航被中断,然后进行一个新的导航。

3. 全局后置路由守卫

  • 可以在路由配置上直接定义 beforeEnter 守卫。全局后置路由守卫会在初始化的时候被调用,在每次路由切换之后被调用

  • 全局后置路由守卫使用的场合不多,一般用于页面跳转后更改页标签title

    router.afterEach((to, from) => {
      document.title = to.meta.title || '管理系统'
    })
    

4. 独享路由守卫

  • 可以在路由配置上直接定义 beforeEnter 守卫。独享路由守卫仅仅对指定的那个路由生效

    //独享路由守卫直接写在需要使用的那个路由中
    const router = new VueRouter({
      routes: [
        {
          path: '/foo',
          component: Foo,
          beforeEnter: (to, from, next) => {
            // ...
          }
        }
      ]
    })
    

5. 组件内路由守卫

  • 可以在路由组件内直接定义以下路由导航守卫:

    • beforeRouteEnter通过路由规则,进入该组件时被调用,不能使用组件实例this,因为此时组件实例还没被创建
    • beforeRouteLeave通过路由规则,离开该组件时被调用,可以使用组件this。通常用来禁止用户在还未保存修改前突然离开
    • 只有通过路由规则进入/离开组件才会触发该守卫,如果是类似<About/>这样直接在html中调用并渲染,是不会触发组件内路由守卫的
    const Foo = {
      template: `...`,
      beforeRouteEnter(to, from, next) {...},
      beforeRouteLeave(to, from, next) {...}
    }
    

标签:调用,next,守卫,VueRouter,组件,全局,路由
From: https://www.cnblogs.com/Solitary-Rhyme/p/16881634.html

相关文章

  • VueRouter笔记 - VueRouter基础
    VueRouter目录VueRouter1.VueRouter简介1.1路由的基础实现步骤1.2注意事项2.嵌套路由3.命名路由4.重定向和别名4.1重定向4.2别名5.编程式路由导航5.1使用router......
  • VueRouter笔记 - 路由参数(query/params/props/meta)
    路由参数目录路由参数1.query2.params参数3.props参数4.meta参数1.queryquery可以用于在不同路由之间传递数据(大多数是父传子)一般网页在跳转时显示的链接,?后......
  • Vue3学习笔记(五)——路由,Router
    一、前端路由的概念与原理1.1.什么是路由路由(英文:router)就是对应关系。1.2.SPA与前端路由SPA指的是一个web网站只有唯一的一个HTML页面,所有组件的展示与切换都......
  • SPAl路由
    前端路由根据路由对应地址渲染不同的内容前端的分类页面路由(刷新)根据对应的地址访问不同的页面(location.href  location.assignlocation.repalce) has......
  • 华为eNSP实验:实现路由互通
     实验目的pc1跟pc2之间能够ping通实验准备  配置ip地址                                ......
  • 静态路由原理与配置
    静态路由原理与配置一、路由路由器二、路由表的形成1.直连网段2.非直连网段三、静态路由与默认路由静态路由(以及配置)默认路由(以及配置)四、路由器转......
  • 华为&思科设备默认的路由协议优先级
    华为&思科设备默认的路由协议优先级华为设备默认路由协议优先级在华为的设备中,路由器分别定义了外部优先级和内部优先级。外部优先级是指用户可以手工为各路由协议配......
  • Spring Cloud Alibaba:Gateway之路由过滤器工厂(三)
    前两篇博客已经介绍了十一种路由过滤器工厂:​​SpringCloudAlibaba:Gateway之路由过滤器工厂(一)​​​​SpringCloudAlibaba:Gateway之路由过滤器工厂(二)​​随着​​Gatewa......
  • 前端路由
    1.路由基本概念和原理(1)路由本质:对应关系后端路由:根据不同用户URL请求,返回不同内容        本质:URL请求地址与服务器资源之间的对应关系前端路由:根......
  • Vue 路由跳转后刷新页面404解决办法
    第一种解决方法:将vue路由模式mode:'history'修改为mode:'hash';//router.js文件constrouter=newRouter({//mode:'history',mode:'hash',routes:[{path:......