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" };
});

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.

Do poczytania

Błąd w pytaniu

Vue · Senior · pytanie 39

Sprawdź się

Rozwiąż test Vue · Senior: pytania i odpowiedzi są tasowane, a na końcu czeka przegląd błędów.

Rozwiąż ten test