Есть ли способ получить URL-адрес router.back в vue? - PullRequest
2 голосов
/ 25 сентября 2019

Проблема

У меня есть электронное приложение с vue.Поскольку у пользователя нет пользовательского интерфейса для навигации назад, я создал кнопку «Назад».Это работает до сих пор так хорошо.Но после входа в систему и на индексной странице 1004 * пользователь больше не сможет вернуться назад.Как он будет переходить к входу в систему, но будет перенаправлен обратно на страницу индекса.И это не имеет особого смысла.Для этого я хочу отключить кнопку возврата.

Протестировано

Я добавил глобальную переменную, чтобы получить предыдущий маршрут в моих компонентах.Но почему-то это портится при нажатии дважды или чаще.Это выглядит так:

router.beforeEach((to, from, next) => {
  Vue.prototype.$prevRoute = from;

  return next();
});

Я думаю, это потому, что при переходе назад предыдущий маршрут изменился на маршрут, с которого вы шли.И больше не история.

Кажется, есть запрос функции github для добавления реферера, но он был открыт в 2016 году, и я не уверен, что это снова будет та же проблема, что и выше.https://github.com/vuejs/vue-router/issues/883

Встроенные элементы защиты

Я также протестировал beforeRouteLeave и beforeRouteUpdate, но, поскольку в моем макете есть кнопка возврата, эти методы не называются.

Application-design

У меня есть страница входа с аутентификацией.После этого информация о пользователе сохраняется в локальном хранилище, и я использую концепцию промежуточного программного обеспечения для перенаправления (https://markus.oberlehner.net/blog/implementing-a-simple-middleware-with-vue-router/)

. Чтобы вернуться назад, я использую этот метод: this.$router.back()

Ожидание

Мой ожидаемый результат - возможность проверить в компоненте back-button, будет ли обратный маршрут входом в систему или если в стеке возврата есть только одно значение.В этом случае я бы отключил кнопку возврата.

...