У меня есть такой код:
created: function() {
if(!localStorage.hasOwnProperty('auth_token')) {
router.replace({name: 'login'});
} else {
if(router.history.current.name == 'login') {
router.push({name: 'allVideos'});
}
}
}
внутри моего корневого экземпляра Vue.
Поэтому, когда страница загружается, она проверяет токен. Когда у меня нет токена, я перенаправляюсь на страницу входа. Если у меня есть перенаправление токена на все видео, если на странице входа, или вообще не перенаправлять, если на других страницах.
Все работает нормально, когда я обновляю, просматриваю некоторые кнопки и т. д. Но когда я вручную набираю /#/login и нажимаю, введите страницу входа Vue render, но auth_token существует. И когда я печатаю вручную, он вообще не попадает в метод created
. Когда я снова набираю /#/login со страницы входа, он снова начинает работать .... Есть идеи ??? Спасибо
Обновление: Ну, я пытался использовать навигационные охранники
router.beforeEach((to, from, next) => {
if(localStorage.hasOwnProperty('auth_token')) {
if(to.name == 'login') {
next({name: 'allVideos'});
}
} else {
if(to.name != 'login') {
next({path: '/login'});
}
}
next();
});
Код теперь намного чище, как по мне, но проблема остается, когда я печатаю вручную
router.beforeEach
должен помочь router.vuejs.org/en/advanced/navigation-guards.html - person Belmin Bedak   schedule 26.01.2017created
, я должен использовать хукbeforeEach
? проверим, пока не читал об этом. Спасибо! - person Bogdan Dubyk   schedule 26.01.2017