
*通过获取后台用户信息的权限来进行路由的动态加载
store.dispatch('GetInfo').then(res => { // 拉取用户信息
let permissionData = tool.deepCopy(store.getters.permission)
let getData = (obj) => {
if(obj.children) {
obj.children.forEach((item) => {
item.component = _import(item.component)
getData(item)
})
}
}
//递归进行路由菜单添加
permissionData.forEach((item) => {
item.component = Layout
item.alwaysShow = true
getData(item)
})
permissionData.push({ path: '*', redirect: '/404', hidden: true })
router.options.routes = router.options.routes.concat(permissionData)
router.addRoutes(permissionData)
next({ ...to, replace: true })//确保addRoutes完成
}).catch((error) => {
store.dispatch('FedLogOut').then(() => {
Message.error('验证失败,请重新登录')
next({ path: '/login' })
})
NProgress.done() // 结束Progress
})

本文介绍了一种基于用户权限动态加载路由的方法,通过store.dispatch('GetInfo')获取用户信息,利用递归函数为每个菜单项添加组件,实现权限数据的动态更新。同时,将自定义的权限数据与现有路由合并,确保路由加载的完整性和安全性。
1056

被折叠的 条评论
为什么被折叠?



