Vue · Senior · Pytanie 39 z 75
Jak zaimplementować dostęp oparty na rolach przez meta tras?
{ 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" };
});- ✓Poprawna odpowiedź: Sprawdzać
to.matched, by meta tras nadrzędnych dotyczyła też ich tras potomnych - 2Czytać tylko
to.meta, które zawiera już meta wszystkich rodziców - 3Umieścić sprawdzenie w szablonie każdego komponentu
Wyjaśnienie
to.meta to płytkie scalenie meta rodzica i potomka, więc wartości potomka nadpisują rodzicielskie; to.matched daje każdy poziom osobno. Typuj meta przez rozszerzenie modułu RouteMeta.