路由守卫 /路由拦截

  • Post author:
  • Post category:其他



1. 在访问一个页面的时候 也就是在进行路由跳转的时候,把这个跳转拦下来 做一些判断或者操作 然后来执行是继续访问这个页面还是执行别的操作

路由的导航守卫又叫 路由的生命周期函数 也叫 路由的钩子函数

路由的导航守卫 有三种六个

第一种 :全局守卫  全局守卫写在 router/index.js中,守卫所有的页面
有两个:
beforeEach 路由跳转之前
afterEach 路由跳转之后


// router.beforeEach((to, from, next) => {
//   // console.log("全局守卫");
//   // next(); //放行路由
//   if (localStorage.getItem("username")) {
//     next();
//     //如果本地存储中有 username证明已经登陆了 就执行下一步
//   } else {
//     if (to.path == "/login") {
//       next();
//     } else {
//       next("/login");
//     }
//     //为了防止死循环 如果是要跳转login 就放行 就不会死循环了,如果不是login就跳转到login
//   }
// });
//路由跳转之前执行



第二种:组件级守卫 要守卫哪个页面就写在哪个组件里
beforeRouteEnter 页面进入之前
beforeRouteUpdate 路由更新之前
beforeRouteLeave 页面离开之后
这三个 导航守卫 是选项对象 跟data同级

 beforeRouteEnter(to, from, next) {
    if (localStorage.getItem("username")) {
      next();
    } else {
      next("/login");
    }
  },
  //守卫这个页面(路由跳转之前) 如果登陆了就继续访问 没有就跳转登录页面


第三种:单个路由规则独享的守卫 放在要守卫的路由规则里
beforeEnter

 beforeEnter(to, from, next) {
          if (localStorage.getItem("username")) {
            next();
          } else {
            next("/login");
          }
        },
        //单个路由规则独享的守卫 跟组件级守卫功能一样 但是建议用组件级守卫


这些路由守卫都有三个参数 to from next
代表到哪儿去 从哪儿来 下一步



版权声明:本文为jia632133535原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。