찾다

 >  Q&A  >  본문

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

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

첫 번째 IF에서는 경로에 액세스하려면 인증이 필요한지 확인하고, 거짓이면 사용자를 로그인 페이지로 보냅니다. 그런 다음 사용자가 속한 그룹을 확인하고 실패하면 루트 페이지 "/"로 리디렉션합니다. 이러한 IF 문 중 어느 것도 사실이 아닌 경우 사용자가 탐색하려는 페이지로 리디렉션합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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粉724256860376일 전407

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

  • P粉409742142

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

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

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

    으아아아

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