"router.beforeEach(async (to, from, next) => {\n const token = localStorage.getItem('token');\n const rolesLocal = sessionStorage.getItem('roles');\n const requiresAuth = to.meta.requiresAuth;\n const roles = to.meta.roles;\n let isRedirecting = false;\n\n // 如果该路由有权限且未登录,则跳转登录页面\n if (requiresAuth && !token && !roles) {\n if (!isRedirecting) {\n isRedirecting = true;\n alert("请先登录!");\n if (to.path === '/login') { // 如果当前路由是登录页面,则放行\n next();\n } else {\n next("/login");\n }\n }\n } else {\n if (to.path === '/home' && rolesLocal === "admin" && rolesLocal !== "teacher" && rolesLocal !== "user") {\n next();\n } else if (to.path === '/teacherhome' && rolesLocal !== "admin" && rolesLocal === "teacher" && rolesLocal !== "user") {\n next();\n } else if (to.path === '/userhome' && rolesLocal !== "admin" && rolesLocal !== "teacher" && rolesLocal === "user") {\n next();\n } else if (to.path === '/logout') { // 如果是退出登录页面,则执行退出登录操作\n clearToken();\n refreshPage();\n } else {\n if (rolesLocal === "admin" && rolesLocal !== "teacher" && rolesLocal !== "user") {\n next("/home");\n } else if (rolesLocal !== "admin" && rolesLocal === "teacher" && rolesLocal !== "user") {\n next("/teacherhome");\n } else if (rolesLocal !== "admin" && rolesLocal !== "teacher" && rolesLocal === "user") {\n next("/userhome");\n } else {\n next();\n }\n }\n }\n})\n```}


原文地址: https://www.cveoy.top/t/topic/pRnm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录