Я делаю страницу входа с функцией перенаправления, и следующая логика:
если я никогда не входил в систему и ввожу URL-адрес «/home/qiputranscode», он будет перенаправлен на
'http://127.0.0.1:8000/#/login?redirect=%2Fhome%2Fqiputranscode'.
затем мне нужно запросить сервер с именем пользователя и паролем, чтобы получить токен для входа на страницу «/home/qiputranscode».
но после ввода моего имени пользователя и pwd URL-адрес становится таким:
'http://127.0.0.1:8000/?#/login?redirect=%2Fhome%2Fqiputranscode'
и не запрашивал сервер или перенаправлял на «/home/qiputranscode».
Итак, почему URL-адрес добавить? сам по себе перед #.
и в чем между ними разница, буду признателен, если подскажете
код перенаправления такой:
router.beforeEach((to, from, next) => {
if (to.matched.some(r => r.meta.requiredAuth)) {
if (store.state.token) {
next()
} else {
next ({
path: '/login',
query: {redirect: to.fullPath}
})
}
} else {
next()
}
});
@NaN Ваше решение полностью решило мою проблему, большое спасибо!!
Пожалуйста. Сделал ответ из моего комментария
Часть после ?
- это query
с key=redirect
и value=full path
Чтобы перенаправить на сохраненный путь, вызовите это после входа в систему
this.$router.push({ path: this.$route.query.redirectTo })
И вам также необходимо предотвратить поведение формы по умолчанию
<form v-on:submit.prevent ...
Часть после ? это запрос с перенаправлением ключа и значением полного пути. Чтобы перенаправить сюда после входа в систему, позвоните
router.push({ path: this.$route.query.redirectTo })
. И похоже, вам нужно запретить отправку формы с помощью<form v-on:submit.prevent