ELADMIN 在线文档 ELADMIN 在线文档
  • 快速开始
  • 后端手册
  • 前端手册
  • 部署项目
常见问题
更新日志
支持项目
VPS推荐
在线体验 (opens new window)
  • 快速开始
  • 后端手册
  • 前端手册
  • 部署项目
常见问题
更新日志
支持项目
VPS推荐
在线体验 (opens new window)
帮瓦工 🌈 无需备案,境外服务器推荐
  • 快速开始

    • 简介
    • 快速了解
    • 快速开始
    • 特别鸣谢
  • 后端手册

    • 新增模块
    • 权限控制
    • 通用查询
    • 系统缓存
    • 异常处理
    • 系统日志
    • 数据权限
      • 数据权限
      • 注解方式(适用JPA版本)
      • 数据权限
      • 代码参考
    • 定时任务
    • 代码生成
    • 运维管理
    • 系统工具
    • 其他杂项
  • 前端手册

    • 菜单路由
    • 自定义主键
    • 多字段排序
    • 隐藏操作按钮
    • 使用数据字典
    • 统一异常处理
    • 部分系统组件
  • 部署项目

    • 常规部署方式
    • 容器部署方式
目录

数据权限

# 数据权限

本系统是基于部门做的一个简单数据权限控制,也就是通过用户角色中的数据权限控制用户能看哪些数据。

实现思路就是通过获取角色中关联的部门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

目前系统在 部门管理 中加入了数据权限供大家测试,具体查看源码

# 数据权限

系统提供了三种数据权限控制

  • 全部数据权限 无数据权限限制
  • 本级数据权限 限制只能看到本部门数据
  • 自定义数据权限 可根据实际需要选择部门控制数据权限

image0f5e3aad914e8118.jpg

# 代码参考

可参考 DeptQueryCriteria.class 中的写法,底层实现 QueryHelp.class 中的 42 行

帮助我们改善此页面! (opens new window)
上次更新: 2024/09/11, 06:38:28
系统日志
定时任务

← 系统日志 定时任务→

Theme by Vdoing | Copyright © 2018-2025 知了小站
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
帮瓦工