Vue Router: способы проверки роута (что-то вроде middleware или route guard)

Проверка по префиксу

Напирмер, нам хочется проверить достаточно ли прав у пользователя, чтобы перейти по какому-то пути. 
В этом конкретном случае будем проверять ‘/admin’ префикс. 
Конфиги роутов

// Containers
import Full from '@/containers/Full'

// Views
import Dashboard from '@/views/Dashboard'
import Search from '@/views/Search'

// Serve pages
import Login from '@/views/pages/Login'
new Router({
mode: 'hash',
linkActiveClass: 'open active',
scrollBehavior: () => ({ y: 0 }),
routes: [
{
path: '/login',
name: 'Login',
component: Login

},
{
path: '/admin',
redirect: '/dashboard',
name: 'Home',
component: Full, // в этом компоненте мы будем проверять права юзера
children: [
{
// TODO
},
{
// TODO
}

]
}
]
})

За префикс пути ‘/admin’ у нас отвечает компонент ‘Full’

export default {
name: 'full',
beforeRouteEnter (to, from, next) {
// Здесь мы можем сделать проверку прав пользователя.
// В случае, если прав не достаточно, мы можем отправить
// ползователя на страницу логина, вернув что-то вроде:
if (user.hasPermission('admin')) {
return next()
}
else {
return next({
path: '/login'
})
}
},
}

Здесь используется один из хуков корневого компонента `beforeRouteEnter()`. Важно, чтобы метод `beforeRouteEnter()` вернул `next()`. Подробнее здесь