角色权限分配
根据 RBAC 模型,当创建好权限后,需要把权限先分配角色,再把角色授权给用户和组织使用。权限和角色之间是多对多关系,即1个角色可以拥有多个权限,1个权限可以分配给多个角色。
权限分配给角色,同时支持在开发时和运行时两种环境进行设置。
开发时设置
实现原理
开发时设置是指在开发阶段就把权限和角色的关系设置好,应用运行时无需设置此项内容就可以对访问用户做访问约束。开发时设置相当于先内置角色权限在微服务中。
配置文件写入
开发时设置会把角色和权限的关联关系写入到 metainfo 配置文件中,后续在门户中注册微服务后,门户会读取微服务的 metainfo 配置文件把角色和权限数据加载出来。关联关系是配置到 roles 节点的 permissions 项中。
数据库表写入
开发时设置是写入到门户的 permission_debug 表。permission_debug 即是权限表,也是角色和权限关联表,通过 role_id 将权限关联到角色。比如:
实现效果
在页面设计区,点击右上角的齿轮按钮,可以进入开发时设置的页面,如下图所示:
主要操作如下:
- 在增加或者编辑角色过程中,可以选择相关联的权限
可以从功能权限、界面权限(显示在功能权限的页面里面)、数据权限和 API 权限等方面进行权限的单选或者多选,比如功能权限方面可以选择多个页面,也可以同时在数据权限、API 权限中再选择加入几个权限,这块可以根据业务需要自行设置。
- 功能权限选择
- 数据权限选择
- API权限选择
- 权限和角色配置后,在列表页面中需要点击保存配置文件保存设置
运行时设置
除了在开发阶段配置好权限和角色后,也可以在应用运行中动态设置权限和角色的分配关系。
实现原理
开发时设置相当于先内置角色权限在微服务中,这样就固化了这块的内容。在实际使用场景中,经常会需要额外添加权限和角色,以及授权给更多用户使用。这时如果只有开发时设置是不够的,需要在运行时灵活进行配置。
数据库表写入
运行时设置是写入到门户的 permission 表(区别于 permission_debug 表)。permission 同样即是权限表,也是角色和权限关联表,通过 role_id 将权限关联到角色。比如:
实现效果
运行时设置是在正式门户中维护(因此应用需要发布后才能进行设置),打开路径是在应用资源管理页面,如下图所示
- 设置过程和开发时环境类似,设置后需要点击保存并且发布按钮进行保存
- 开发时配置的角色(开发配置)只能查看
- 运行时配置的角色(生产配置)才能进行编辑和删除