我们在开发小程序或者H5应用的时候,需要设计完善的权限系统。通常在低代码中,我们需要基于RBAC模型进行设计。
RBAC的解释是基于角色的访问控制,我们不是直接给用户添加权限,而是给角色添加权限。这样在将用户添加到角色中就具备了角色对应的访问权限。
本篇介绍一下基于RBAC的权限设计
1 表结构设计
通常我们的权限系统需要三个对象,包括角色、用户和权限。他们之间的关系都是多对多,我们可以使用UML的类图来表达表和表之间的关系
首先是角色和用户的关系,我们用一个中间表来表达角色和用户的多对多关系
接着是角色和权限的关系,我们用一个中间表来表达权限和角色之间的多对多关系
2 创建数据源
关系梳理清楚之后,就需要创建对应的表,我们一共需要建立五张表,分别是角色表、用户表、权限表、角色用户表、角色权限表
3 创建应用
表结构搭建好了之后,就可以开发我们的后台应用了。打开控制台,点击应用,点击前往编辑器
点击从空白新建
创建成功之后切换构建模式,切换成PC模式
点击创建页面,选择表格与表单页
在右侧选择数据模型,布局选择左侧导航布局
按照上述方法,依次创建其他页面
4 搭建页面
页面创建完毕之后,我们需要配置一下左侧的导航菜单,切换到布局视图
选择左侧导航布局,点击根据页面一键生成菜单
只保留列表页面
回到页面设计,预览一下,让配置生效
5 角色和用户关联
目前我们这种搭建方案,模块都是独立的。为了让模块之间有关系,我们需要按照角色模型添加一下功能。首先是角色和用户关联,通常我们在用户模块可以增加一个按钮叫分配角色。选中我们的表格组件,在操作列添加一个按钮,修改名称为分配角色
在点击这个按钮的时候,我们需要弹出一个列表,供用户勾选角色。选中页面组件,添加一个弹窗
然后在弹窗内容里添加标签选择组件
标签项就是我们的角色名称,为了数据绑定,我们需要新建一个变量来显示标签项的值
在代码区点击新建,创建一个数据表查询
选择角色管理
然后点击选项的fx绑定,我们通过变量绑定来构造一下选项值
输入如下的表达式
$w.rolelist.data.records.map(item=>({label:item.jsmc,value:item._id}))
我们这里label构造成角色名称,value构造成数据标识,这样做的目的是当我们选中角色的时候,要结合当前选中角色的数据标识和当前登录用户的数据标识来写入到数据源中
总结
本篇我们介绍了权限设计的一个理论知识,RBAC,基于角色的访问控制。按照理论我们设计了表结构,搭建了页面,讲解了标签选择组件的用法。下一篇我们介绍一下如何获取用户信息,这样就可以将角色分配到用户表里。