import { getToken } from '@/utils/auth'; import NProgress from 'nprogress'; import 'nprogress/nprogress.css'; NProgress.configure({ showSpinner: false }); const whiteList = ['/login', '/image_change', '/register']; // 重定向白名单 // 用户类型对应的跳转路径 export const userTypeToJump = { USER: '/', ORG_MANAGER: '/project_manage/org/project', ADMIN: '/org_manage', }; export function getUserTypeToJump(type) { return userTypeToJump[type] || '/'; } export function setupRouterGuard(router) { // 全局前置守卫 router.beforeEach(async (to, from, next) => { NProgress.start(); const token = getToken(); const userType = token?.user_type ?? ''; if (token) { if (to.path === '/login') { next({ path: getUserTypeToJump(userType) }); NProgress.done(); return; } return; } else if (whiteList.includes(to.path)) { // 在登录白名单中,直接进入 next(); return; } // 其他无权访问的页面将重定向到登录页面 next('/login'); NProgress.done(); return; }); // 全局后置钩子 router.afterEach(() => { NProgress.done(); }); }