См. Приведенный ниже код, который может вам помочь
/ ** * промежуточное ПО для аутентификации * /
router.beforeEach((to, from, next) => {
// redirect to login page if not logged in and trying to access a restricted page
const loggedIn = localStorage.getItem('usertoken') == null ? false : true;
const user = JSON.parse(localStorage.getItem('user'));
if (to.meta.portal == 'admin') {
if (to.meta.auth) {
if (!loggedIn) {
next('/admin/login')
} else if (loggedIn) {
next();
}
} else {
if (!loggedIn) {
next();
} else if (loggedIn) {
if (user.role_id == '1') {
next('/admin/home');
} else {
next('/');
}
}
}
} else if (to.meta.portal == 'front') {
if (loggedIn) {
if (user.role_id == '1') {
next('/admin/home');
} else {
next('/');
}
} else if (!loggedIn) {
if (to.path == "/admin") {
next('/admin/login');
} else {
next();
}
}
}
next()
})
export default router;
И вам необходимо создать два файла маршрутизатора: один для фронта, а другой для администратора. :
// файл переднего маршрута будет выглядеть как
export default [{
path: '/',
meta: { auth: false, portal: 'front' },
component: () => import('@/components/layouts/front/main.vue'),
children: [
{
path: '/',
name: 'front-home',
title: 'Dashboard',
meta: { auth: false, portal: 'front' },
}
]
}]
// файл администратора маршрутизатора будет выглядеть как
export default [
{
path: 'user',
name: 'users',
title: 'Users',
meta: { auth: true, portal: 'admin' },
component: () => import('@/components/templates/admin/user'),
}
]
Основное отличие - это портал, который определяет, какой порталполучит доступ по соответствующему маршруту. Без портала внутри мета это не будет работать.