내 앱에서 사용자가 액세스할 수 있는 경로와 액세스할 수 없는 경로를 설정하려고 하는데 가끔 브라우저가 멈추고 오류 메시지가 표시되지 않아 내가 뭘 잘못하고 있는지 알 수 없습니다.
첫 번째 IF에서는 경로에 액세스하려면 인증이 필요한지 확인하고, 거짓이면 사용자를 로그인 페이지로 보냅니다. 그런 다음 사용자가 속한 그룹을 확인하고 실패하면 루트 페이지 "/"로 리디렉션합니다. 이러한 IF 문 중 어느 것도 사실이 아닌 경우 사용자가 탐색하려는 페이지로 리디렉션합니다.
router.beforeEach((to, from, next) => { const isAuth = localStorage.getItem("auth"); const userGroupRaw = localStorage.getItem("userData"); const accessGroup = to.meta.group; let userGroup; if (userGroupRaw) { userGroup = JSON.parse(userGroupRaw).id_access; } if (to.matched.some((record) => record.meta.requiresAuth)) { console.log("if1"); if (isAuth === "false") { next({ path: "/login" }); } if ( (accessGroup === 1 && (userGroup === 3 || userGroup === 4)) || !userGroup ) { next({ path: "/" }); } next(); } next(); }); export default router;
P粉4097421422024-03-20 09:41:36
"else" 문을 사용하지 않았으므로 next()
를 여러 번 호출하여 무한 루프에 빠졌습니다(댓글에서 언급했듯이).
이 시점에서 return
를 사용하여 코드를 중지할 수 있습니다.