数据权限
提示
对查询数据进行权限过滤,平台提供通过注解的方式对查询数据进行权限过滤。
- 单条件过滤使用 @DataScope
- 多条件组合使用 @DataScopes
平台提供通过租户、用户、角色、组织进行数据权限过滤。
注意
- 数据权限过滤注解只能在查询方法上使用,不能在其他方法上使用。
- 数据权限过滤注解在Controller层使用。
- 需要进行数据权限过滤的表,需要在表中添加对应字段进行权限过滤。
- 租户:tenant_id
- 用户:user_id
- 角色:role_id
- 组织:org_id
数据权限注解描述
DataScope
java
/**
* 需要进行权限控制的表
*
* @return 表名
*/
String table() default "";
/**
* 进行权限控制的类型
*
* @return 权限控制类型
*/
DataScopeType type() default DataScopeType.None;
/**
* 表进行过滤的字段名称,这个根据具体需要过滤的表建表时名称而定,尽量采用默认值标准命名(不填 采用默认值)
* 租户:默认值tenant_id
* 用户:默认值user_id
* 角色:默认值role_id
* 组织:默认值org_id
*
* @return 字段名
*/
String fieldName() default "";
/**
* 字段值 多个值之间是or条件(不填各权限控制使用默认值,传入优先使用传入值。例如:租户使用当前租户)
* 用户:传账号名称 例如:values={"admin","mfish"}
* 角色:传入角色固定编码 例如:values={"superAdmin","manage"}
* 组织:传入组织固定编码 例如:values="admin"
* 租户:直接传入id(注意:::考虑到租户一般情况下都是查询当前租户数据,所以该值并未过多实现)
*
* @return 字段值
*/
String[] values() default {};
/**
* 排除条件 满足排除条件的数据不会被过滤,即会被查询出来 如果是多个条件,多个条件的数据都会被查询出来(不传时不做排除)
* 例如:exclude={"isPublic=1"}
* 如果排除值为变量采用#{XXX}格式,例如exclude={"isPublic=#{XXX}"}
* 变量值可以通过ServletRequest.getParameter中获取,如果变量值为空,则不进行过滤
* @return 排除条件
*/
String[] excludes() default {};
/**
* 忽略条件(特殊处理,优先级最高) 当前表满足忽略条件时,优先使用忽略条件设置的条件进行过滤
* 只要一个数据范围中存在忽略条件,其他所有数据范围条件失效
* 变量值可以通过ServletRequest.getParameter中获取,如果变量值为空,则不使用忽略条件
* @return 跳过条件
*/
String[] ignores() default {};DataScopes
用于组合多个DataScope注解
参考代码
可参考 DemoDataScopeController类中的方法
摸鱼低代码 mfish-nocode