Хорошо, я использую опекуна по маршруту, 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();
}
}
})
}