vue2.0全局路由守衛(全局控制登陸)

例:bash

router.beforeEach((to, from, next) => {
  let isLogin = Vue.prototype.$loginInfo.info.is_login
  if (to.matched.length === 0) { //沒有匹配到當前路由
    next('/error')
  } else if (!isLogin && to.path !== '/login' && to.path !== '/register' && to.path !== '/password') {
    //若是沒有登陸,跳轉到登陸頁面
    next('/login')
  } else {
    if ((to.path === '/login' || to.path === '/register' || to.path === '/password' || to.path === '/error') && isLogin) { 
      //若是已經登陸,卻嘗試訪問登陸頁面或者錯誤頁面,將繼續保持本來的頁面
       next(from.path)  
    } else {
      next()
    }
  }
  // next()
})
複製代碼

全局後置鉤子

你也能夠註冊全局後置鉤子,然而和守衛不一樣的是,這些鉤子不會接受 next 函數也不會改變導航自己:函數

router.afterEach((to, from) => {
  // ...
})

複製代碼

路由獨享的守衛

你能夠在路由配置上直接定義 beforeEnter 守衛:ui

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})
複製代碼
相關文章
相關標籤/搜索