Маршрутизация охранников в Framework 7 Vue - PullRequest
0 голосов
/ 26 августа 2018

Когда я делаю следующее:

{
      path: '/chat/',
      async(routeTo, routeFrom, resolve, reject) {
        if (localStorage.getItem('token')) {
          resolve({
            component: require('./assets/vue/pages/chat.vue'),
          });
        } else {
          resolve({
            component: LoginPage
          });
        }
      },
    }

Все работает как положено, но если я делаю это:

{
      path: '/chat/',
      component: require('./assets/vue/pages/chat.vue'),
      async(routeTo, routeFrom, resolve, reject) {
        if (localStorage.getItem('token')) {
          resolve();
        } else {
          resolve({
            component: LoginPage
          });
        }
      },
    }

Тогда компонент всегда разрешается, независимо от асинхронности.Это также тот случай, когда я пытаюсь использовать функцию beforeEnter вместо async;если компонент определен на верхнем уровне маршрута, он всегда разрешается.

Как я могу разместить промежуточное ПО аутентификации на маршруте?

1 Ответ

0 голосов
/ 23 января 2019

Может быть, попробовать это.

const checkAuth = (to, from, resolve, reject) => {
   if (localStorage.getItem('token')) {
     resolve({ component: routeComponentMap[to.name] })
   } else {
     resolve({ component: LoginPage })
   }
}

const routeComponentMap = {
  CHAT: require('./assets/vue/pages/chat.vue')
}

const routes = [{
  path: "/chat/",
  name: "CHAT",
  async: checkAuth
}]
...