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");
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
});
|