маршрутизатор vuejs в цикле - PullRequest
1 голос
/ 08 мая 2019

У меня есть код beforeEach ниже в моем VUE JS. Мне нужно только проверить на loggedIn, а не authRequired. Если я удалю authRequired из условия if, эта функция будет выглядеть. Есть ли другой способ, которым я могу просто проверить значение localalstorage и не проверять authRequired.

router.beforeEach((to, from, next) => {
  const publicPages = ['/login', '/register'];
  const authRequired = !publicPages.includes(to.path);
  const loggedIn = localStorage.getItem('user');

  if (authRequired && !loggedIn) {
    return next('/login');
  }

  next();
})

Я пытался до кода. Который застревает в непрерывном цикле.

router.beforeEach((to, from, next) => {
  const publicPages = ['/login', '/register'];
  const loggedIn = localStorage.getItem('user');

  if (!loggedIn) {
    return next('/login');
  }

  next();
})

1 Ответ

1 голос
/ 08 мая 2019

Я не вижу никакой возможности, если вы хотите продолжать использовать глобальные охранники (router.beforeEach).Если вы хотите прекратить использование глобальных охранников маршрута, вы можете использовать beforeEnter и применить его к каждому маршруту вручную.В этом решении можно будет использовать вторую функцию на каждом маршруте, кроме маршрута 'login'.

const authGuard = (to,from,next) => {
  const loggedIn = localStorage.getItem('user');

  if (!loggedIn) {
      return next('/login');
    }

    next();
}

const routes = [
    {
        path: '/login',
        component: Login
    },
    {
        path: '/someProtectedRoute',
        component: Bar,
        beforeEnter: authGuard
    },
    {
        path: '/anotherProtcted',
        component: Bar,
        beforeEnter: authGuard
    }
]
...