router.beforeEach 路由攔截進行用戶登陸處理

router.beforeEach((to, from, next) => {
  // ...
})
  1. to: Route: 即將要進入的目標路由對象    
  2. from: Route: 當前導航正要離開的路由
  3. next: Function: 必定要調用該方法來 resolve 這個鉤子。執行效果依賴 next 方法的調用參數。
    • next(): 直接跳轉到to.path路徑。進行管道中的下一個鉤子。若是所有鉤子執行完了,則導航的狀態就是 confirmed (確認的)。
    • next(false): 中斷當前的導航。若是瀏覽器的 URL 改變了(多是用戶手動或者瀏覽器後退按鈕),那麼 URL 地址會重置到 from 路由對應的地址。
    • next('/') 或者 next({ path: '/' }): 跳轉到一個不一樣的地址。當前的導航被中斷,而後進行一個新的導航。
  4. 案例
    const whiteList = ['/author']
    router.beforeEach((to, from, next) => {
      //判斷是否是登陸
      let token = getToken();
      if (common_fuc.isDefine(token)) {
        if (to.path === '/author') {
          next({ path: '/' });
        } else {
          next();
        }
      } else {
    	//若是沒有登陸 判斷to.path是不是/author 是就直接next()去首頁,不然登陸
        if (whiteList.indexOf(to.path) !== -1) {
    	  //微信登陸返回頁面繼續 或跳轉到登陸頁面
          next()
        } else if(isWeiXin()==true&&config_site.is_debug==false){
    	  //若是是微信登陸 而且不是調試模式
    	  setBeforeLoginUrl(to.fullPath);
          getWxAuth();
        }
      }
    	next();
    })
相關文章
相關標籤/搜索