当前位置:   article > 正文

java 项目通用数据权限设计_java 数据权限管理设计

java 数据权限管理设计


前言

权限一般分为操作权限和数据权限

操作权限: 菜单,页面,按钮
数据权限: 能看到的数据,包括各种页面的数据范围


一、常见的数据权限

例如:

  • 多租户,每个租户只能看到各自租户内部的数据

一般通过字段级别过滤,mybatis/mybatis-plus通常通过拦截器自动凭拼接或 手动拼接;

  • 单独配置某个特定的数据权限: 例如之前的项目,单独分配区域权限,这样每个人可以灵活看到区域数据,达到数据权限的配置;

一般是特定的数据权限,类似于用户级别的属性一样,每次查询用户 单独查询,类似于菜单权限数据一样; 这里推荐将此类数据权限放在 角色 上

  • 本文讲解,通用数据权限: 即类似于多租户的感觉,适用于所有表的过滤

与多租户不同的是,多租户的数据权限字段是固定的,不灵活,这里根据当前项目,分享两种灵活思路!

二、通用数据权限设计思路

  1. 通过类似枚举定义,在每个角色中,增加一个属性为数据范围, 分为各个等级; 其中等级的限制条件可以是各种维度的一种: 机构,区域,组织,然后类似于通过等级的不同,生成sql片段手动拼接到查询条件中;

例如: 当前组织以及子组织 (不是迭代)
sql片段为: org_code = 1 or org_code = 1-1
等级可以是: 当前组织; 子组织; 当前以及子组织; 当前以及迭代子集;当前组织的三级组织;等等

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/972695
推荐阅读
相关标签
  

闽ICP备14008679号