beforeEnter Vue Router, Infinite L oop с Next () Vuex - PullRequest
0 голосов
/ 09 июля 2020

Хорошо, я использую опекуна по маршруту, beforeEnter, Идея в том, что если вы не аутентифицированы, он перенаправит вас на логин, но если вы аутентифицированы, а вы go на логин, он перенаправит вас на панель управления или на главную страницу.

Ошибка возникает, когда вы не аутентифицированы, и переходите к логину, который имеет ту же функцию опекуна, но с параметром, который отличает его, при вводе второго следующего (), начать бесконечный l oop и не закончить sh решение.

Вот определение моих маршрутов.

Login Route definition image

Dashboard Route definition image

Здесь функция beforeEnter. В основном то, что я делаю, - это запуск диспетчеризации, которая возвращает пользователя. профиль.

/*
    This will cehck to see if the user is authenticated or not.
*/
function requireAuth(to, from, next) {

  store.dispatch(USER_REQUEST); // Get user profile

  store.watch(() => store.getters.getProfile, profile => {

    // Strict
    if (to.matched.some(record => record.meta.requireAuth)) { // Pages that require strict authentication

      // If you aren't logging, redirect to login page
      if ((store.getters.isAuthenticated === false &&
        store.getters.isProfileLoaded === false)) {

        next({
          path: '/login',
          meta: {
            requireAuth: false
          }
        });

      } else {
        next();
      }

    } else { //Pages that are hidden when you log in.

      
      // If you are logging, redirect to main page.
      if (store.getters.isAuthenticated === true && store.getters.isProfileLoaded === true && profile.verified) {

        next({
          path: '/dashboard',
        });

      } else {
        next();
      }
      
    }

  })

} 
...