찾다

 >  Q&A  >  본문

beforeEach를 사용할 때 브라우저가 응답하지 않습니다.

내 앱에서 사용자가 액세스할 수 있는 경로와 액세스할 수 없는 경로를 설정하려고 하는데 가끔 브라우저가 멈추고 오류 메시지가 표시되지 않아 내가 뭘 잘못하고 있는지 알 수 없습니다.

첫 번째 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粉724256860P粉724256860255일 전337

모든 응답(1)나는 대답할 것이다

  • P粉409742142

    P粉4097421422024-03-20 09:41:36

    "else" 문을 사용하지 않았으므로 next()를 여러 번 호출하여 무한 루프에 빠졌습니다(댓글에서 언급했듯이).

    이 시점에서 return를 사용하여 코드를 중지할 수 있습니다.

    으아아아

    회신하다
    0
  • 취소회신하다