介绍
MESH-PLATFORM
是一个全新的软件开发框架。
1:项目数据权限介绍
- 基本信息
数据权限是RBAC权限体系的延伸,用于控制用户能够访问哪些数据记录(而不仅仅是菜单或功能)。
- 数据权限的几种常见模式
1:全部数据权限:可访问所有数据
2:本部门及以下数据权限:可访问本部门及下属部门的数据
3:本部门数据权限:只能访问本部门的数据
4:仅本人数据权限:只能访问自己创建的数据
5:自定义数据权限:通过规则配置灵活控制
- 设计原由
1:有软件使用基础的比较好理解,人员,角色,菜单/数据权限关系,但也经常遇到一些传统行业或者接触比较少的客户人员对此比较陌生,例如:有时候就会反馈命名已经给老板设置了董事长的岗位,但是无法看到全部数据。由此想将菜单权限与数据权限分开,菜单权限
由后台角色
控制,数据权限
由前台岗位
控制。
- 设计思路
1:所有业务数据表机构数据权限由三部分维护:scope_user_id
,scope_org_id
,tenant_id
。scope_user_id
记录当前数据所属个人,scope_org_id
记录当前数据所属组织(最末级),tenant_id
记录当前数据所属租户。
2:登录账号可维护当前所属的组织:变更后后续产生的业务数据以当前选定的填充。
3:通过当前登录人员获取所属岗位以及岗位对应组织。
4:通过基于SQL拦截的数据权限实现数据权限过滤:
例如:张三只能查看财务部个人数据,但是可以查看人事部下属所有数据,联合岗位对应组织ID与当前人员ID,或条件查询数据,可以更加灵活实现数据权限控制。
5:技术实现:通过实现Mybatis-plus
的MultiDataPermissionHandler
接口,重写getSqlSegment
方法,自定义表达式。
6:项目实现地址:components->start-bases->start-data->start-mybatis-plus->(...)handler->DataScopeHandler