Vue · Senior · Запитання 39 з 75
Як реалізувати доступ за ролями через meta маршрутів?
{ path: "/admin", component: Admin, meta: { roles: ["admin"] } }
router.beforeEach((to) => {
const roles = to.matched.flatMap((r) => r.meta.roles ?? []);
if (roles.length && !roles.some(auth.hasRole)) return { name: "forbidden" };
});- ✓Правильна відповідь: Перевіряти
to.matched, щоб meta батьківських маршрутів застосовувалася й до дочірніх - 2Читати лише
to.meta, де вже є meta всіх батьків - 3Робити перевірку в шаблоні кожного компонента
Пояснення
to.meta - неглибоке злиття meta батька й нащадка, тому значення нащадка перезаписують батьківські; to.matched дає кожен рівень окремо. Типізуйте meta через розширення модуля RouteMeta.