权限继承时子路由没生效,是我写错了吗?
我在做后台系统的权限控制,父路由设置了权限,子路由按理说应该继承才对,但实际访问时子页面还是被拦住了,有点搞不懂。
我试过在父级 meta 里加 auth 字段,也确认了路由守卫里有读取 meta.auth,但子路由好像没拿到这个值。是不是 Vue Router 的嵌套路由不会自动继承 meta 啊?
<!-- router.js 示例 -->
{
path: '/admin',
component: AdminLayout,
meta: { auth: ['admin'] },
children: [
{
path: 'users',
component: UserList
// 这里没写 meta,期望继承父级的 auth
}
]
}
最简单的办法是在路由守卫里遍历
to.matched数组,这个数组包含了从父到子的所有路由记录。只要其中任何一个 record 有auth,就认为需要鉴权。代码大概这么改,复制过去试试:
这样写的话,子路由不用写 meta,只要父级写了,
to.matched里就能查到,权限控制就能生效了。