java 项目通用数据权限设计

124 阅读2分钟

文章目录


前言

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

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


一、常见的数据权限

例如:

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

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

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

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

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

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

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

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

本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。