vue 项目路由权限管理实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 项目路由权限管理实现相关的知识,希望对你有一定的参考价值。

参考技术A 项目基于 vue-element-admin 基础之上进行开发,感谢 花裤衩 以及为此项目做出贡献的大佬 [社会社会]!

路由数据由后端控制,前端调用接口返回数据;前端拿到数据处理成可使用的路由结构,然后渲染到页面。

为了能提供更多的功能,后端返回的数据结构是在原来菜单结构基础之上有所改动的。

原路由数据结构:

后端返回数据结构:

路由数据采用多级嵌套结构,基本可以满足需求。

拿到接口返回的数据之后还不能直接使用,需要经过一些处理。

在本地的开发,新增页面时,为了方便开发,获取到后端返回的数据之后用了一个方法来合并数据:

temporaryMenuArray 临时路由数组的结构需要跟后端返回的数据结构一致。

使用 setTemporaryMenu :

合并完临时的路由之后就开始进行路由的处理了。

从上面后端返回的数据结构中可以看出,已经和需要处理成的路由很像了,但还是有一些数据没有必要在专门的系统那里维护,所以需要一些其他数据的处理:

routesComponents 为一个手动维护的页面路由文件:

得到的 userCanUseRouteModules 结构如下:

上面数据中的 type 为2、3层级的 component 已经被替换成对应页面的路由模块了。

得到 userCanUseRouteModules 之后,其中 name 为 storeManagement:head 的那一层数据是供头部菜单使用的,其 children 的数据才是需要添加的路由数据:

此时的 asyncRoutes 只放了默认匹配的路由,这个是需要放在所有路由的最后的:

至此对路由的处理结束。

处理路由这一步是放在 router.beforeEach 路由全局前置守卫里的,结合原有的逻辑进行了一些判断处理。

因为路由数据是由后端数据处理得到的,只包含和挂载了当前用户能有权限访问的部分,没有权限访问的路由就没有被 router.addRoutes 添加,所以并没有在路由守卫里对每次路由的跳转都进行校验。

以上是关于vue 项目路由权限管理实现的主要内容,如果未能解决你的问题,请参考以下文章

Vue实战篇|使用路由管理用户权限(动态路由)

vue基于d2-admin的RBAC权限管理解决方案

Vue实现动态路由

vue 权限管理深度探究

vuevue的路由权限管理

vue后端返回路由表来进行权限管理,加载指定路由结构,不包含则不加载