【低代码】角色和权限的解决方案

本文探讨了在低代码环境中实现角色和权限维护的方法,包括权限分类、角色与用户的关联、接口定义以及具体实现。文章提到了权限分为操作权限、资源权限和后端API权限,并介绍了如何通过Vue3和UI库创建权限设置界面,如模块信息、操作按钮和字段权限。最后,文章总结了角色权限设置的过程,并强调了权限设置在项目中的应用。
摘要由CSDN通过智能技术生成

低代码的角色和权限

基于Vue3 + UI 库,实现角色和权限的维护,依赖低代码的 JSON 而设计。

普通项目也可以使用,只是由于没有现成的 JSON,显得稍微麻烦一些。

角色和权限,我是一直都觉得挺简单的,甚至都不需要一开始就去设计角色。因为,开发项目的时候,按照“原子”级别设置功能模块,然后把权限设置到字段。这样,项目开发完毕再去设置角色也不迟,甚至可以让客户自行维护

主要内容

  • 权限的分类
  • 权限、角色、用户的关系
  • 定义相关的接口
  • 实现角色的权限的维护方式

权限的分类

以前权限可以分为操作权限和资源权限,现在前后端分离,可以加上后端API的权限。

  • 操作权限:用户可以做哪些操作,比如打开某个模块,使用添加、修改、审批等操作。
  • 资源权限:用户可以使用哪些数据,比如只能维护自己的客户信息,不能看别人的客户信息等。
  • 后端API权限:用户可以使用哪些API。

整理一下画了一个脑图:

其中后端 API 可以和操作按钮相对应,比如拥有【添加按钮】的权限的话,那么就应该有对应的后端 API 的权限,否则如何提交数据呢?

当然还有一些后端 API 和操作按钮没有明显的对应关系,这种情况需要单独设置,比如访问“字典”的权限。

权限、角色和用户的关系

一个角色可以有“一组”权限,一个用户可以有多个角色,一个角色也可以有多个用户。这样就建立了一个简单的关联关系。

定义接口

总体思路有了我们开始设计接口。好吧,其实以前是直接设计关系型数据库的,不过现在喜欢先设计接口。

  • 角色和权限
  • 角色里的用户
  • 权限的备选容器* 模块列表* 模块里的操作按钮* 模块的列* 模块的查询条件* 模块的资源权限* 模块的后端API

IRole 角色和权限

一个角色拥有哪些权限?我们来罗列一下:

type idType = number | string

/**
 * (一个)角色拥有的一组权限
 */
export interface IRole {roleId: idType, // 角色编号roleName: string, // 角色名称rolePower: { // 角色拥有的权限集合moduleIds: Array<idType>, // 可以使用哪些模块buttonIds: {[moduleId: idType]: Array<idType> // 模块里面可以使用的操作按钮},gridIds: {[moduleId: idType]: Array<idType> // 模块里可以使用的列(字段)},findIds: {[moduleId: idType]: Array<idType> // 模块里可以使用的查询条件(字段)},gridIdsNot: {[moduleId: idType]: Array<idType> // 列表里面不可以用的列},findIdsNot: {[moduleId: idType]: Array<idType> // 列表里面不可以使用的查询字段},resources: {[moduleId: idType]: Array<idType> // 模块可以加载的资源权限},APIs: {[moduleId: idType]: Array<idType> // 模块里的特殊的后端API}}
} 

IRoleUser 角色的用户

/**
 * 角色和用户的关联,基于关系型数据库
 */
export interface IRoleUser {roleUserId: idType,roleId: idType,userId: idType,
}

/**
 * 一个用户可以用多个角色
 */
export interface IUserRole {userId: idType,roleIds: Array<idType>
} 

IRoleUser 是按照关系型数据库设置的,IUserRole 是按照对象的思路做的,一个用户有哪些角色。

IR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值