| | |
| | | router.beforeEach((to, from, next) => { |
| | | NProgress.start() |
| | | if (getToken()) { |
| | | to.meta.title && store.dispatch('settings/setTitle', to.meta.title) |
| | | /* has token*/ |
| | | if (to.path === '/login') { |
| | | next({ path: '/' }) |
| | |
| | | } else { |
| | | if (store.getters.roles.length === 0) { |
| | | // 判断当前用户是否已拉取完user_info信息 |
| | | store.dispatch('GetInfo').then(res => { |
| | | // 拉取user_info |
| | | const roles = res.roles |
| | | store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => { |
| | | // 测试 默认静态页面 |
| | | // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { |
| | | store.dispatch('GetInfo').then(() => { |
| | | store.dispatch('GenerateRoutes').then(accessRoutes => { |
| | | // 根据roles权限生成可访问的路由表 |
| | | router.addRoutes(accessRoutes) // 动态添加可访问路由表 |
| | | next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 |
| | | }) |
| | | }) |
| | | .catch(err => { |
| | | store.dispatch('FedLogOut').then(() => { |
| | | }).catch(err => { |
| | | store.dispatch('LogOut').then(() => { |
| | | Message.error(err) |
| | | next({ path: '/' }) |
| | | }) |
| | | }) |
| | | } else { |
| | | next() |
| | | // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ |
| | | // if (hasPermission(store.getters.roles, to.meta.roles)) { |
| | | // next() |
| | | // } else { |
| | | // next({ path: '/401', replace: true, query: { noGoBack: true }}) |
| | | // } |
| | | // 可删 ↑ |
| | | } |
| | | } |
| | | } else { |
| | |
| | | // 在免登录白名单,直接进入 |
| | | next() |
| | | } else { |
| | | next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页 |
| | | next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 |
| | | NProgress.done() |
| | | } |
| | | } |