Бесконечный цикл с Vue Router Global Before Guards - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь перенаправить пользователя с помощью Firebase Auth и Vue Router.

Дело в том, что когда Router перенаправляет пользователя на '/', на веб-сайте ничего не отображается (полностью белый экран).

Я знаю, что я делаю что-то не так, но я не знаю точно, что не так.

Вот так выглядит мой файл router.js:

const router = new Router({
  routes: [
    {
      path: '*',
      redirect: '/login'
    },
    {
      path: '/',
      redirect: '/login'
    },
    {
      path: '/login',
      name: 'Login',
      component: Login
    },
    {
      path: '/',
      name: 'Home',
      component: Home,
      meta: {
        authenticated: true
      }
    }
  ]
})

router.beforeEach((to, from, next) => {
  let user = firebase.auth().currentUser;
  let approbation = to.matched.some(record => record.meta.authenticated)
  if (approbation && !user) {
    next('/login')
  } else if (!approbation && user && from.path !== '/') {
    next('/')
  }
})

export default router 

1 Ответ

0 голосов
/ 26 апреля 2019

Возможно, что ни if (approbation && !user), ни else if (!approbation && user && from.path !== '/') не соответствует действительности.Поскольку вы не звоните next() после того, как вы if-else заблокировали, перехват не разрешается, и vue-router не знает, куда идти.

Обязательно добавьте вызов к next() послеВы if-else блоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...