import router from './router' import Base64 from "base-64"; import store from './store' import { setItem, getItem, removeAllItem } from "@/utils/storage"; import { getCookie } from "@/utils/cookie"; // 白名单 const whiteList = ['/login', '/oatuh_login', '/404', '/401', '/zeroTrust_login', '/focusExploration', '/clueVerification', '/deploymentApproval'] /** * 路由前置守卫 * to 去哪里 * from 来自哪 * next 往下走 */ let onRun = true; router.beforeEach(async (to, from, next) => { // 存在 token ,进入主页 // if (store.state.user.token) { // 快捷访问 if (store.getters.token) { // 判断用户资料是否获取 // 若不存在用户信息,则需要获取用户信息 // 触发获取用户信息的 action,并获取用户当前权限 await store.commit('permission/setRouteReady', true) // 添加完动态路由之后,需要在进行一次主动跳转 const afterMenuList = await getItem('menusPermission'); // 处理用户权限,筛选出需要添加的权限 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 { // 没有token的情况下,可以进入白名单 if (whiteList.indexOf(to.path) > -1) { next() } else { const cookie = getCookie("clientKey"); if (cookie) { next(`/zeroTrust_login`) } else { const isOatuh = getItem('isOatuh') // 没有token的情况下,可以进入白名单 if (isOatuh) { const idEntityCard = getItem('idEntityCard') next(`/oatuh_login?token=${Base64.encode(idEntityCard)}`) } else { next('/login') } } } } })