Маршрутизатор Vue перенаправляет пользователей на другую домашнюю страницу, если они уже вошли в систему

#vue.js #vuejs2 #vue-router

#vue.js #vuejs2 #vue-router

Вопрос:

При запуске Vue 2.6.11 и маршрутизатора 3.2.0 Vue аутентификация обрабатывается через серверную часть Rails, доставляющую JWT в приложение Vue. JWT сохраняются в localStorage после входа пользователя в систему.

В моем приложении есть 2 основные страницы, домашняя страница и панель мониторинга. Домашняя страница — это, по сути, просто целевая страница, на которой просто объясняется, о чем приложение кнопка входа, а моя панель мониторинга — это место, где зарегистрированные пользователи получают доступ к фактической функциональности приложения. Я бы хотел, чтобы возвращающиеся пользователи автоматически перенаправлялись на панель мониторинга при посещении корневого URL, поскольку им не будет интересно просматривать домашнюю страницу, если они уже создали учетную запись.

Как правильно с этим справиться? Я знаю, что мог бы просто выполнить router.beforeEach проверку JWT, а затем перенаправить его оттуда, но проблема в том, что это также будет мешать другим страницам, заставляя их всегда перенаправлять на панель управления, чего я, очевидно, не хочу. Домашняя страница — это единственная страница, которую я хочу, чтобы зарегистрированные пользователи не видели.

Ответ №1:

Вы все еще можете использовать beforeEach для этого. Просто проверьте, является ли маршрут, по которому вы переходите, домашней страницей:

 router.beforeEach((to, from, next) => {
  if (to.name === 'Home' amp;amp; isAuthenticated) {
    next({ name: 'Dashboard' })
  } else next()
})