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