数据权限
# 数据权限
本系统是基于部门做的一个简单数据权限控制,也就是通过用户角色中的数据权限控制用户能看哪些数据。
实现思路就是通过获取角色中关联的部门ID,再通过 IN 查询,达到数据权限控制,前提是被查询的表中需要有 部门ID 的字段。
# 注解方式(适用JPA版本)
现可通过注解 @DataPermission
进行权限控制,Mybatis-plus 版本的用户需要自行实现该功能
Jpa版本源码如下:
/**
* <p>
* 用于判断是否过滤数据权限
* 1、如果没有用到 @OneToOne 这种关联关系,只需要填写 fieldName [参考:DeptQueryCriteria.class]
* 2、如果用到了 @OneToOne ,fieldName 和 joinName 都需要填写,拿UserQueryCriteria.class举例:
* 应该是 @DataPermission(joinName = "dept", fieldName = "id")
* </p>
* @author Zheng Jie
* @website https://eladmin.vip
* @date 2020-05-07
**/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DataPermission {
/**
* Entity 中的字段名称
*/
String fieldName() default "";
/**
* Entity 中与部门关联的字段名称
*/
String joinName() default "";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
目前系统在 部门管理
中加入了数据权限供大家测试,具体查看源码
# 数据权限
系统提供了三种数据权限控制
- 全部数据权限 无数据权限限制
- 本级数据权限 限制只能看到本部门数据
- 自定义数据权限 可根据实际需要选择部门控制数据权限
# 代码参考
可参考 DeptQueryCriteria.class 中的写法,底层实现 QueryHelp.class 中的 42 行
帮助我们改善此页面! (opens new window)
上次更新: 2024/09/11, 06:38:28