Vue роутер с Navigation Guards - следующий () не работает - PullRequest
0 голосов
/ 15 октября 2019

Защита Vue маршрутов с помощью навигационной охраны. Навигационная защита работает при загрузке или обновлении, но функция next() не работает при доступе к маршрутам с использованием <router-link>.

<router-link to="{ name: 'page1' }" >Page 1</router-link>

кодов защиты навигации.

{
   path: '/page1',
   component: page1,
   name: 'page1',
   meta: { auth: true },
   beforeEnter: (to, from, next) => {
     if (!store.state.roles.includes('is_superadmin')) {
            if (!store.state.firm_permissions.includes('can_have_fire_contractors')) {
                 console.log('success page1')
                 next({
                    name: "page0"
                 })
             } else {
                 next()
             }
      }
      next()
    },
 }

Я вижу console.log('success page1'), но next() не работает ...

1 Ответ

1 голос
/ 15 октября 2019

Добавить return после next():

beforeEnter: (to, from, next) => {
     if (!store.state.roles.includes('is_superadmin')) {
            if (!store.state.firm_permissions.includes('can_have_fire_contractors')) {
                 console.log('success page1')
                 next({
                    name: "page0"
                 })
                 return // Add this
             } else {
                 next()
             }
      }
      next()
    },
...