Vue Router beforeEach не вызывается - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время у меня возникают проблемы с поиском ошибки в коде маршрутизатора, она работала раньше, и я не знаю, когда и как я ее исправил.Я уже проверил в старых версиях, но, похоже, не изменился.Проблема в том, что даже когда я удаляю весь код из beforeEach Hook в моем маршрутизаторе и просто использую оператор console.log (), в консоли ничего не печатается, и поэтому мой auth-guard не работает.Я пытался изменить порядок в соответствии с этим: https://forum.vuejs.org/t/router-beforeeach-if-manually-input-adress-in-browser-it-does-not-work/12461/3, но ничего не изменилось.

У меня следующий код:

router / index.js

router.beforeEach = (to, from, next) => {
  console.log('he?')
  const currentUser = Firebase.auth().currentUser
  const isGold = store.getters['user/isGold']
  const requiresAuth = to.matched.some(route => route.meta.requiresAuth)
  const requiresGold = to.matched.some(route => route.meta.requiresGold)

  console.log(requiresGold, isGold, 'halloooooooo?')

  if (currentUser && to.name === 'Login') {
    next('/dashboard')
  }

  if (requiresGold && !isGold) {
    console.log('trigger')
  }

  if (requiresAuth && !currentUser) {
    next('/login')
  } else {
    next(false)
  }
}

main.js

Firebase.auth().onAuthStateChanged(user => {
  if (user) {
    const getToken = () => {
      return user.getIdToken(true).then(token => {
        store.dispatch('user/setToken', token)
      })
    }
    getToken().then(() => {
      store.dispatch('user/setUser')
      setInterval(getToken, 3540 * 1000)
    })
  }
  new Vue({
    el: '#app',
    store,
    router,
    template: '<App/>',
    components: { App }
  })

})

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 13 ноября 2018

Вы не назначаете router.beforeEach.router.beforeEach - это метод, и вы вызываете его с помощью функции. ( документы ) Вот как вы должны использовать навигационную защиту маршрутизатора:

router.beforeEach((to, from, next) => {
  console.log('he?')
  const currentUser = Firebase.auth().currentUser
  const isGold = store.getters['user/isGold']
  const requiresAuth = to.matched.some(route => route.meta.requiresAuth)
  const requiresGold = to.matched.some(route => route.meta.requiresGold)

  console.log(requiresGold, isGold, 'halloooooooo?')

  if (currentUser && to.name === 'Login') {
    next('/dashboard')
  }

  if (requiresGold && !isGold) {
    console.log('trigger')
  }

  if (requiresAuth && !currentUser) {
    next('/login')
  } else {
    next(false)
  }
});
...