基于Ant Design Pro2 的权限管理实践

前言

在中后台管理项目中,权限是重要的基础功能。在项目架构初期,就要做好全面的设计。 传统的基于url控制的后端权限,在前端spa应用的前提下,已经不再合适。服务端并不能获取到前端的路由跳转。权限这快,前端的逻辑将会更重。基于Ant Design Pro2 ,umi2 的技术栈前提下,antd已经提供的一套相对完善的权限方案。

目标

权限的维度我们希望控制到按钮层,包括菜单,包括路由。

antd方案

antd的方案基于角色维度来进行。config设定当前路由的准入角色。权限组建接受当前角色信息,如此判断渲染的内容。

如需对某些页面进行权限控制,只须在路由配置文件 router.config.js 中设置 authority 属性即可,代表该路由的准入权限,pro 的路由系统中会默认包裹 Authorized 进行判断处理。

缺陷:umi2中基于约定路由的形式。在路由初始化时不能动态配置config。及不能动态修改authority字段。而且基于角色的权限不能满足我们的需求。我们希望精确到用户的权限配置。后端下发菜单,路由以及按钮list。

实现

为解决该问题。我们在router.config.js新增code字段。标记路由的唯一code。Routes定义路由层的父级组件。在该组件中进行路由拦截,实现路由级别权限控制。 // config.js

[
  { path: '/', component: './pages/index.js' },
  { path: '/list', component: './pages/list.js',code:123, Routes: ['./routes/PrivateRoute.js'] },
]
复制代码

// PrivateRoute.js

  if (route.code && menuList && menuList.indexOf(route.code) == -1) {
    router.replace('/exception/403');
  }
复制代码

菜单权限

基于pro的菜单方案进行了修改。直接动刀BasicLayout.js,修改原先基于authority字段的菜单逻辑。改至code字段。

新增路由管理

路由表由前端提供,路由名称,(包括路由,菜单,以及按钮类型)。后端存至服务端。再有对应的token下发对应的code list。

按钮

写个高阶组件封装下button。 over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值