import router from './router' import Performance from '@/tools/performance' import { usePermissionStore } from "@/store/permission" import { useUserStore } from "@/store/user" export function usePermission() { let end = null const whiteList = ['/login'] // 不重定向白名单 router.beforeEach(async (to, from, next) => { const { GenerateRoutes, routers } = usePermissionStore() const { GetUserInfo, token, roles, logOut } = useUserStore() end = Performance.startExecute(`${from.path} => ${to.path} 路由耗时`) /// 路由性能监控 if (token) { if (to.path === '/login') { next({ path: '/' }) } else { const hasRoles = roles && roles.length > 0; if (hasRoles && routers && routers.length > 0) { next() } else { try { const roles = await GetUserInfo() const accessRoutes = await GenerateRoutes(roles) accessRoutes.forEach(item => { router.addRoute(item) }) next({ ...to, replace: true }) } catch (error) { await logOut() console.error(error) next('/login') } } } } else { if (whiteList.includes(to.path)) { next() } else { next('/login') } } setTimeout(() => { end() }, 0) }) router.afterEach(() => { }) }