vue動態路由添加


const whiteList = ['/login', '/auth-redirect', '/bind', '/register']


router.beforeEach((to, from, next) => {
 const token = sessionStorage.getItem('access_token')
 // 存在 token 說明已經登錄
 if (token) {
   // 登錄過就不能訪問登錄界面,需要中斷這一次路由守衛,執行下一次路由守衛,並且下一次守衛的to是主頁'
   if (to.path === '/login') {
     next({ path: '/' })
   }
   // 保存在store中路由不為空則放行 (如果執行了刷新操作,則 store 里的路由為空,此時需要重新添加路由)
   if (store.getters.getRoutes.length || to.name != null) {
     //放行
     next()
   } else {
     // 將路由添加到 store 中,用來標記已添加動態路由
     store.commit('ADD_ROUTER', '需要添加的路由')
     router.addRoutes('需要添加的路由')
     // 如果 addRoutes 並未完成,路由守衛會一層一層的執行執行,直到 addRoutes 完成,找到對應的路由
     next({ ...to, replace: true })
   }
 } else {
    // 未登錄時,注意 :在這里也許你的項目不只有 logon 不需要登錄 ,register 等其他不需要登錄的頁面也需要處理
   //  if (to.path !== '/logon') {
  //     next({ path: '/logon' })
 //   } else {
//      next()
//    }

    if (whiteList.indexOf(to.path) !== -1) {
             // 在免登錄白名單,直接進入
             next()
           } else {
             next(`/login?redirect=${to.fullPath}`) // 否則全部重定向到登錄頁
             NProgress.done()
           }
 }
router.afterEach((to, from)  => {
  if(to.meta.checked){
    if (to.meta.title) {
    	document.title = to.meta.title
    }
  }
  NProgress.done()
})

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM