Mendix用户角色权限设计思路

​在传统的企业应用架构设计中,不可避免需要涉及用户角色权限的设计,其中最为通用的模型是RBAC模型。RBAC(基于角色的访问控制)是指用户通过角色与权限进行关联。即一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户—角色—权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,一般者是多对多的关系。很多架构师和开发者在使用Mendix的时候可能会有相同的疑虑,如何在Mendix上实现原有的企业用户角色权限模型?本案例的设计来源于润建股份有限公司数字平台研发院。数字平台研发院自2019年开始采用Mendix低代码平台进行企业信息系统开发和数字化建设,配备有40余人的研发团队;并在服务商的参与下,设计开发适用于企业客户的用户角色权限系统。

Mendix作为企业级的低代码平台,可以为客户带来符合企业预期的组织架构和用户角色权限管理功能。设计一套灵活的用户中心,实现用户角色权限的模块,简称UPMS(User Permission Management System)。主要实现三个需求点:

01. 用户基本信息管理CURD

02. 实现菜单管理

03. 实现用户数据操作权限

数据模型(Domain Model)设计

用户角色权限Domain Model

User实体是用户模型的核心实体,串联着组织-角色和菜单的关系,关键实体关联关系:

各个关键实体都配置一个临时Helper实体,用于在Table的操作中,辅助主实体做数据查询和操作,如选中某行数据记录,或选中树节点时通过传递AutoID,设置为Helper中的SelectedId字段,关联到对应的实体数据。

管理CURD页面

根据数据模型,设计组织架构、用户中心、用户角色管理、菜单管理4个主要模块,一键生成相应的实体CURD页面。并根据需求,调整页面的字段属性,根据客户需要,调整布局,形成最终交付的页面。

  • 组织人员管理

组织和人员管理页面主要采用自定义树形tree view widget和table进行设计。tree view通过微流递归获取组织数据,形成树形结构。

微流获取组织数据列表

为了实现点击树节点刷新数据的效果(类似Data View中listen to widge的功能),点击树形数据某个节点时,加载对应节点的数据,需要在tree view中预留回调微流的入口。点击节点时,捕获点击对象并传递ID,触发回调微流,刷新组织管理员table和员工table。

对用户数据进行新增和编辑比较简单,对User实体进行管理。其中Antd select组件支持多选,选定一个或多个角色后,保存用户角色数据(类似Input reference set selector)。

  • 菜单管理

菜单实体具有父级id信息,采用层级展示,使用自定义Tree Table widget进行设计。Tree Table基于Ant Design的Tree Table基础交互,完成对数据的加载和操作。配置项包括基础数据源和字段设置、表头按钮交互设置(顶部按钮)、行内交互操作设置(表格栏目配置)。

基础配置
顶部按钮配置
表格栏目配置

新建菜单采用Popup page的方式,根据Menu Helper类获取关联的Menu实体,传递到Menu_NewEdit页面进行数据操作。

  • 角色管理

角色管理比较简单,直接使用Antd Table对Role实体进行管理。

Table widget的设置,包括数据源、按钮配置等。在数据源设置中使用微流Get_Role获取数据,同时进行字段配置,用于在Table widget点击选中行时,通过传递数据记录的AutoID设置SelectedId字段。在后续微流中可通过SelectedId进行实体的查找和操作。

Antd Table支持用户对行内操作按钮进行配置,在Table中,设置“编辑”、“删除”和“设置权限”三个按钮,每个按钮的‘Action’对应到各自的业务微流中。

通过Helper实体,获取对应的Role实体,并调用微流ACT_OpenAddMenuPage打开当前选定角色对应的权限设置页面。

RoleAddMenu采用Popup page layout,使用自定义的tree view select组件展示和操作。tree view select基于Ant Design的tree view select实现,通过Role Helper类,关联查询对应的Role实体,并根据Role – Menu的关联关系,获取菜单列表,并根据用户角色对菜单项进行配置。

Widget前端的交互操作,主要实现勾选和取消菜单后,对数据关联关系进行set和unset的操作,点击保存后对实体的修改进行提交。

安全(Security)模型

对于权限模块的安全模型,可以设置两个基础角色,admin角色和user角色(按需设计),admin和user角色对page、nanoflow、microflow、Entity采用full read/write权限。 

Module角色设置

微流访问权限

页面访问权限
Entity访问权限

项目安全模型中,administrator角色应包含权限较高的upms.administrator角色;User应该包含权限较低的upms.user角色。

总结

本文粗略从技术上讲解了实现企业组织架构,用户角色权限管理的功能模块UPMS。通过此模块,客户可以在运行时实现菜单列表的管理,角色的配置,以及细颗粒度的CURD操作权限配置,对于有类似需求的客户来说是一个很好的补充。本项目采用了Ant Design的React组件,进行了大量的自定义widget和数据绑定。相关参考文档,请参考以下链接:


更多信息,请访问以下链接:

Mendix官网:https://www.mendix.com/zh/

Mendix中国论坛:https://forum.mendix.tencent-cloud.com/

Mendix行业解决方案:https://solutions.mendix.com/

Mendix平台指南:https://www.mendix.com/evaluation-guide/

Mendix动画展示:https://www.mendix.com/demos/

谢谢阅读!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值