在后台系统这类的项目中,用户角色和权限的区分是不可分割的一部分需求。常见的用户权限区分形式有两种,一是前端请求接口拿到后台配置的用户权限信息;另一种是直接由前端来定义每种用户角色的权限页面,然后在生成对应的路由。今天我们来了解前端配置路由权限的方式。
角色权限页面配置
在配置角色对应的路由页面时,可以参考项目所用的前端框架导航组件的参数,我们以elment ui
的menu
组件为例:可对审核方(Auditor)、供应商(Supplier)和需求方(Business)做如下配置:
1 | const appMenuitem = { |
这样配置后,所有用户角色的权限信息都在appMenuitem
中,在项目的开发,我们可以按照配置的对象属性index
(这里是可以由开发按自己的习惯约定)的值,如dataOverview
、demendManage
等来建立页面。如图:
生成侧边菜单逻辑(需配置好路由router才能运行)
:
1 | <el-menu |
1 | this.items = appMenuitem[userMap[this.userInfo.role]]; |
手动配置上的工作就完成了。后面就是完成路由的动态生成了。
路由生成
首页配置在router.js
中配置项目通用路由:
1
2
3
4
5
6
7
8
9
10
11
12
13 let router = new Router({
routes: [
{
path: "/",
redirect: "/home",
},
{
path: "/login",
name: "login",
component: resolve => require(["../views/Login.vue"], resolve)
}
]
});
home
是主路由,前面配置的路由页面均嵌套在其中。下面来看看生成其他路由的方法
1 | function initRouter() { |
只要调用这个方法就可以生成,home
的子级路由了。接下来我们可以通过router的APIaddRoutes
完成路由的添加
1 | // 在页面不刷新的前提 避免重复生产动态路由 |
最后,前端配置生成动态路由的方法基本就是这样啦,这是我在项目中遇到的坑,希望有所帮助.