Я пытаюсь предотвратить несанкционированный доступ к определенным маршрутам, используя переменные requiresAdmin
и сравнивая их со значениями из пользовательского хранилища. Все маршруты работают нормально, но каждый раз, когда вызывается next({name:permission})
, он возвращает «uncaught exception: undefined» в консоли. Как я могу решить эту проблему?
Конфигурация маршрутизатора
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/',
redirect: {name: 'dashboard'}
},
{
path: '/dashboard',
name: 'dashboard',
component: DashboardPage,
meta: {
requiresAuth: true,
is_admin: true
}
},
{
path: '/login',
name: 'login',
component: LoginPage,
meta: {
requiresAuth: false,
is_admin: false,
}
},
{
path: '/permission',
name: 'permission',
component: PermissionPage,
meta: {
requiresAuth: true,
is_admin: false
}
}
]
})
router.beforeEach((to, from, next) => {
if (!store.getters['user/isLoggedIn'] && to.matched.some(record => record.meta.requiresAuth)) {
next({
name: 'login',
})
} else if (!store.getters['user/isAdmin'] && to.matched.some(record => record.meta.is_admin)) {
next({
name: 'permission',
})
} else {
next()
}
});