Я работаю над приложением, которое блокирует доступ пользователя к любой странице, кроме домашней страницы и регистрации, если они не вошли в систему. У меня есть защита от всех маршрутов, которая проверяет, вошел ли пользователь в систему при попытке доступа к странице и перенаправляет на войдите, если он вернул false. В компоненте входа после входа пользователь перенаправляется на домашнюю страницу. Я хочу настроить, когда пользователь входит в него, он перенаправляет на последнюю страницу в приложении, если они ранее были на странице или набрали прямой URL-адрес на страницу, если не перенаправить на домашнюю страницу. Например:
Пользователь переходит на my.app/{somePage} -> проверка маршрута для входа возвращает false -> перенаправление на my.app/sigin -> пользователь успешно входит в систему -> перенаправляет на my.app/{somePage}
//Route Guard
router.beforeEach((to, from, next) => {
if(!signedIn()){
router.replace('/signin')
}
else{
next()
}
})
//Successful signin
signInSuccess(){
//Want this to redirect to intended page if exists
this.$router.replace('/')
}
Я пробовал перенаправить с помощью this. $ Router.go (-1), но когда я перенаправляю на страницу входа в защиту маршрута, предполагаемый маршрут, похоже, не помещается в историю.
Я также попытался настроить состояние в моем хранилище vuex, чтобы захватить предполагаемый маршрут и использовать его для перенаправления после входа в систему, но похоже, что защита маршрута перезагружает всю страницу, поэтому состояние хранилища сбрасывается.
Единственное, что я могу придумать, - это сохранить предполагаемый маршрут страницы в локальном хранилище браузера, но это не кажется надежным решением.
router.push
вместоrouter.replace
. См. router.vuejs.org/guide/essentials. / - person User 28   schedule 10.01.2020returnURL
в/signin
? - person Michal Levý   schedule 10.01.2020