問題:
路由權限生成后,每個用戶角色的權限都不同,
怎么保證在通過路由守衛后進入(path: ‘/’ )正確跳到該用戶擁有權限的首頁面呢?
第一種解決方案:由后端來返回路由
以下為前端自行解決方案:
// 根據roles權限生成可訪問的路由表 store.dispatch('GenerateRoutes', { res }).then(() => { // 動態添加可訪問路由表 // router.addRoutes(store.getters.addRouters) // hack方法 確保addRoutes已完成 // next({ ...to, replace: true }) // 動態路由重定向 start router.addRoutes(store.getters.addRouters) let str = '' function filterAsyncRouter (asyncRouterMap) { str += asyncRouterMap[0].path if ( asyncRouterMap[0].children && asyncRouterMap[0].children.length && asyncRouterMap[0].children[0].meta.type !== 1 ) { str += '/' filterAsyncRouter(asyncRouterMap[0].children) } else { return str } } if (from.path === '/login') { filterAsyncRouter(store.getters.addRouters, str) next({ path: str, replace: true }) } else { next({ ...to, replace: true }) } // 動態路由重定向 end })