64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
import router from "./router";
|
||
import store from "./store";
|
||
import { setItem, getItem, removeAllItem } from "@/utils/storage";
|
||
// 白名单
|
||
const whiteList = [
|
||
"/login",
|
||
"/oatuh_login",
|
||
"/profile",
|
||
"/",
|
||
"/editPassword",
|
||
"/404",
|
||
"/401"
|
||
];
|
||
/**
|
||
* 路由前置守卫
|
||
* to 去哪里
|
||
* from 来自哪
|
||
* next 往下走
|
||
*/
|
||
router.beforeEach(async (to, from, next) => {
|
||
// 存在 token ,进入主页
|
||
// if (store.state.user.token) {
|
||
// 快捷访问
|
||
if (store.getters.token) {
|
||
// 判断用户资料是否获取
|
||
// 若不存在用户信息,则需要获取用户信息
|
||
// 触发获取用户信息的 action,并获取用户当前权限
|
||
await store.commit("permission/setRouteReady", 1);
|
||
// 添加完动态路由之后,需要在进行一次主动跳转
|
||
const afterMenuList = await getItem("menusPermission");
|
||
|
||
// afterMenuList.push('allocationUser');
|
||
// 处理用户权限,筛选出需要添加的权限
|
||
if (store.state.permission.routes == 0) {
|
||
const filterRoutes = await store.dispatch(
|
||
"permission/filterRoutes",
|
||
afterMenuList
|
||
);
|
||
filterRoutes.forEach((item) => {
|
||
router.addRoute(item);
|
||
});
|
||
next({
|
||
...to,
|
||
replace: true
|
||
});
|
||
} else {
|
||
next();
|
||
}
|
||
// 利用 addRoute 循环添加
|
||
} else {
|
||
const isOatuh = getItem("isOatuh");
|
||
// 没有token的情况下,可以进入白名单
|
||
if (whiteList.indexOf(to.path) > -1) {
|
||
next();
|
||
} else {
|
||
if (isOatuh) {
|
||
next("/oatuh_login");
|
||
} else {
|
||
next("/login");
|
||
}
|
||
}
|
||
}
|
||
});
|