У меня есть такой код:Vue2 маршрутизатор не работает, когда тип вручную
created: function() {
if(!localStorage.hasOwnProperty('auth_token')) {
router.replace({name: 'login'});
} else {
if(router.history.current.name == 'login') {
router.push({name: 'allVideos'});
}
}
}
внутри моего Vue корня экземпляра.
Поэтому, когда страница загружается, она проверяет токен. Когда у меня нет токена, я перенаправляюсь на страницу входа. Если у меня есть токен, перенаправление на allVideos, если на странице входа или вообще не перенаправляется, если на других страницах.
Все работает нормально, когда я сделал обновление, прохожу через некоторые кнопки и т. Д. Но когда я вручную набираю/#/login и нажимаю кнопку ввода страницы Vue, но auth_token существует. И когда я печатаю вручную, он не добирается до метода created
. Когда я снова набираю/#/login со страницы входа, он начинает работать ... Любые идеи ??? Благодаря
Update: Ну я пытался использовать навигационные охранники
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();
});
код теперь намного чище, как для меня, но проблема все еще там, когда я печатаю вручную
Я думаю, что концепция не является правильным here.Instead положить эти вещи в Vue, например, я думаю, вы должны идти с каким-то навигацией охранником, в вашем случае 'router.beforeEach' должны делать трюк https://router.vuejs.org/en/advanced/navigation-guards.html –
Вы имеете в виду вместо того, чтобы добавлять такой код в метод 'created', я должен использовать' beforeEach' hook? проверит, не читал об этом еще. Благодаря! –
Да, посмотрите этот пример здесь https://github.com/TahaSh/spa-forum/blob/master/resources/assets/js/main.js#L56 - (обратите внимание, что это Vue 1 и старый код маршрутизатора, но он может помочь вам) beforeEach не является жизненным циклом крючка, это навигационная защита от экземпляра маршрутизатора. –