10 changed files with 1240 additions and 921 deletions
@ -1,63 +1,66 @@ |
|||||
import router from './router' |
import router from "./router"; |
||||
import store from './store' |
import store from "./store"; |
||||
import { Message } from 'element-ui' |
import { Message } from "element-ui"; |
||||
import NProgress from 'nprogress' |
import NProgress from "nprogress"; |
||||
import 'nprogress/nprogress.css' |
import "nprogress/nprogress.css"; |
||||
import { getToken } from '@/utils/auth' |
import { getToken } from "@/utils/auth"; |
||||
import { isPathMatch } from '@/utils/validate' |
import { isPathMatch } from "@/utils/validate"; |
||||
import { isRelogin } from '@/utils/request' |
import { isRelogin } from "@/utils/request"; |
||||
|
|
||||
NProgress.configure({ showSpinner: false }) |
NProgress.configure({ showSpinner: false }); |
||||
|
|
||||
const whiteList = ['/login', '/register','/screening/h5'] |
const whiteList = ["/login", "/register", "/screening/h5", "/screening/h5eva"]; |
||||
|
|
||||
const isWhiteList = (path) => { |
const isWhiteList = (path) => { |
||||
return whiteList.some(pattern => isPathMatch(pattern, path)) |
return whiteList.some((pattern) => isPathMatch(pattern, path)); |
||||
} |
}; |
||||
|
|
||||
router.beforeEach((to, from, next) => { |
router.beforeEach((to, from, next) => { |
||||
NProgress.start() |
NProgress.start(); |
||||
if (getToken()) { |
if (getToken()) { |
||||
to.meta.title && store.dispatch('settings/setTitle', to.meta.title) |
to.meta.title && store.dispatch("settings/setTitle", to.meta.title); |
||||
/* has token*/ |
/* has token*/ |
||||
if (to.path === '/login') { |
if (to.path === "/login") { |
||||
next({ path: '/' }) |
next({ path: "/" }); |
||||
NProgress.done() |
NProgress.done(); |
||||
} else if (isWhiteList(to.path)) { |
} else if (isWhiteList(to.path)) { |
||||
next() |
next(); |
||||
} else { |
} else { |
||||
if (store.getters.roles.length === 0) { |
if (store.getters.roles.length === 0) { |
||||
isRelogin.show = true |
isRelogin.show = true; |
||||
// 判断当前用户是否已拉取完user_info信息
|
// 判断当前用户是否已拉取完user_info信息
|
||||
store.dispatch('GetInfo').then(() => { |
store |
||||
isRelogin.show = false |
.dispatch("GetInfo") |
||||
store.dispatch('GenerateRoutes').then(accessRoutes => { |
.then(() => { |
||||
// 根据roles权限生成可访问的路由表
|
isRelogin.show = false; |
||||
router.addRoutes(accessRoutes) // 动态添加可访问路由表
|
store.dispatch("GenerateRoutes").then((accessRoutes) => { |
||||
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
|
// 根据roles权限生成可访问的路由表
|
||||
}) |
router.addRoutes(accessRoutes); // 动态添加可访问路由表
|
||||
}).catch(err => { |
next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
|
||||
store.dispatch('LogOut').then(() => { |
}); |
||||
Message.error(err) |
|
||||
next({ path: '/' }) |
|
||||
}) |
|
||||
}) |
}) |
||||
|
.catch((err) => { |
||||
|
store.dispatch("LogOut").then(() => { |
||||
|
Message.error(err); |
||||
|
next({ path: "/" }); |
||||
|
}); |
||||
|
}); |
||||
} else { |
} else { |
||||
next() |
next(); |
||||
} |
} |
||||
} |
} |
||||
} else { |
} else { |
||||
// 没有token
|
// 没有token
|
||||
if (isWhiteList(to.path)) { |
if (isWhiteList(to.path)) { |
||||
// 在免登录白名单,直接进入
|
// 在免登录白名单,直接进入
|
||||
next() |
next(); |
||||
} else { |
} else { |
||||
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
|
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`); // 否则全部重定向到登录页
|
||||
NProgress.done() |
NProgress.done(); |
||||
} |
} |
||||
} |
} |
||||
}) |
}); |
||||
|
|
||||
router.afterEach(() => { |
router.afterEach(() => { |
||||
NProgress.done() |
NProgress.done(); |
||||
}) |
}); |
||||
|
After Width: | Height: | Size: 148 KiB |
File diff suppressed because it is too large
File diff suppressed because it is too large
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue