после режима: «история» Vue маршрутизатор не работает

1

Я начал изучать vuejs в последнее время, а также создавать и использовать приложение firebase для аутентификации. У меня возникла проблема после того, как я установил тему webpack и попытался удалить хэштаг по умолчанию по ссылкам. Когда я вставляю mode:history он не перенаправляет меня после входа в систему на мою страницу приветствия. Когда я удаляю его, все работает нормально.

Мой index.js (под моей папкой router):

Vue.use(Router)

const router = new Router({
  mode: 'history',
  routes: [
    {
      path: '*',
      redirect: '/login'
    },
    {
      path: '/',
      redirect: '/login'
    },
    {
      path: '/login',
      name: 'Login',
      component: Login
    },
    {
      path: '/sign-up',
      name: 'SignUp',
      component: SignUp
    },
    {
      path: '/hello',
      name: 'Hello',
      component: Hello,
      meta: {
        requiresAuth: true
      }
    }
  ]
})

router.beforeEach((to, from, next) => {
  let currentUser = firebase.auth().currentUser;
  let requiresAuth = to.matched.some(record => record.meta.requiresAuth);

  if (requiresAuth && !currentUser) next('login')
  else if (!requiresAuth && currentUser) next('hello')
  else next()
})

export default router

И вот образец моей кнопки входа:

<button class="btn" type="submit" v-on:click="signIn">Log In</button>

И мой компонентный скрипт:

<script>
  import firebase from 'firebase'

  export default {
    name: 'login',
    data: function() {
      return {
        email: '',
        password: ''
      }
    },
    methods: {
      signIn: function() {
        firebase.auth().signInWithEmailAndPassword(this.email, this.password).then(
          (user) => {
            this.$router.replace('hello')
          },
          (err) => {
            alert('Oops. ' + err.message)
          }
        );
      }
    }
  }
</script>

Связано ли это с функцией v-on:click?

Pls сообщит мне, если вам нужно что-нибудь еще для решения моей проблемы.

  • 0
    Нет, это нормально, как я уже упоминал ранее, когда я удаляю режим истории, все просто отлично работает
  • 0
    Пожалуйста, покажите весь код вашего шаблона
Теги:
firebase
vue.js
vuejs2
firebase-authentication

1 ответ

0

Дело имеет значение!

замещать

this.$router.replace('hello')

с

this.$router.replace('Hello')

Также замените

next('login')

с

next('/login')

или же

next('Login')
  • 0
    где я должен поставить next('/login') ?
  • 0
    здесь if (requiresAuth && !currentUser) next('login') а также следующая строка
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню