JEECGboot数据规则篇

news/2024/10/23 9:23:15/

使用

一、功能说明

列表数据权限,主要通过数据权限控制行数据,让不同的人有不同的查看数据规则;
比如: 销售人员只能看自己的数据;销售经理可以看所有下级销售人员的数据;财务只看金额大于5000的数据等等;

二、规则字段配置说明(非常重要):

①条件规则:大于/大于等于/小于/小于等于/等于/包含/模糊/不等于
②规则值:指定值 ( 固定值/系统上下文变量 )
日期默认值格式:2020-04-10
时间默认值格式:2020-04-13 12:00:00
③条件规则是包含: 规则值用逗号分隔
1.当前用户上下文变量
注意:数据权限配置,规则值可以填写系统上下文变量(当前登录人信息),从而根据当前登录人信息进行权限控制。

三、编码 描述(动态)

sys_user_code 当前登录用户登录账号
sys_user_name 当前登录用户真实名称
sys_date 当前系统日期
sys_time 当前系统时间
sys_org_code 当前登录用户部门编号
sys_multi_org_code 当前登录用户拥有的所有机构编码,逗号分隔
tenant_id 当前登录用户租户ID 要求:3.4.5 版本+

规则值,配置写法如下:#{sys_user_code}

注意:如果需要通过当前登录人、登录部门,进行数据权限控制,则业务表必须有以下系统标准字段;比如:创建人,创建时间,创建人所属部门,有了这些标准字段,就可以通过当前登录人进行数据隔离控制;

银轮为例:
订单池订单输入页面要控制普通人员自己只能看自己录入的,
计划员可以看自己部门的。

1:建表时,在数据库表中必须有创建人编号,部门编号。
2:在页面中配置数据规则:
在这里插入图片描述
在这里插入图片描述

3:在需要约束数据权限的页面的查询接口上开启使用数据权限:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这个语句内部去查了数据权限,必须写!不写数据权限不会起作用。
最后根据构造的查询器执行查询就可以根据权限查出数据了。

原理

一:数据权限获取:**

1:切注解
使用切面:切注解:@PermissionData

public Object arround(ProceedingJoinPoint point)
ProceedingJoinPoint point

2:参数准备
获取切面 被切的注解

Signature signature = joinPoint.getSignature();MethodSignature methodSignature = (MethodSignature) signature;Method method = methodSignature.getMethod();if (method != null){xxxxxx annoObj= method.getAnnotation(xxxxxx.class);}return null;

3:查询数据权限(根据获取的注解的参数,用户数据。
当注解中没有配置参数时,会使用requestPath不过此时就是另一种配置权限的方式了)

//
List<SysPermissionDataRuleModel> dataRules = commonAPI.queryPermissionDataRule(component, requestPath, username);
if(dataRules!=null && dataRules.size()>0) {/*** 临时存储,  往请求里面,传入数据查询条件 request.setAttribute(MENU_DATA_AUTHOR_RULES, dataRules); 在后面会再从request中取出来使用*/JeecgDataAutorUtils.installDataSearchConditon(request, dataRules);SysUserCacheInfo userinfo = commonAPI.getCacheUser(username);JeecgDataAutorUtils.installUserInfo(request, userinfo);}

4:执行查询并存储入request
JeecgDataAutorUtils.installDataSearchConditon(request, dataRules); request.setAttribute(MENU_DATA_AUTHOR_RULES, list);

/*** 往链接请求里面,传入数据查询条件* * @param request* @param dataRules*/public static synchronized void installDataSearchConditon(HttpServletRequest request, List<SysPermissionDataRuleModel> dataRules) {@SuppressWarnings("unchecked")List<SysPermissionDataRuleModel> list = (List<SysPermissionDataRuleModel>)loadDataSearchConditon();// 1.先从request获取MENU_DATA_AUTHOR_RULES,如果存则获取到LISTif (list==null) {// 2.如果不存在,则new一个listlist = new ArrayList<SysPermissionDataRuleModel>();}for (SysPermissionDataRuleModel tsDataRule : dataRules) {list.add(tsDataRule);}request.setAttribute(MENU_DATA_AUTHOR_RULES, list); // 3.往list里面增量存指}

二:数据规则进行拼接


QueryGenerator.applyPermissionWrapper(autoQueryWrappe/**   * 获取请求对应的数据权限规则* * @return*/@SuppressWarnings("unchecked")public static synchronized List<SysPermissionDataRuleModel> loadDataSearchConditon() {return (List<SysPermissionDataRuleModel>) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULES);}

http://www.ppmy.cn/news/10106.html

相关文章

flex布局

flex布局 以下6个属性设置在容器上 flex-direction &#xff1a;主轴的方向 flex-wrap &#xff1a;一条轴线排不下&#xff0c;如何换行 flex-flow justify-content &#xff1a;项目在主轴上的对齐方式&#xff08;水平轴&#xff09; align-items &#xff1a;项目在交叉轴上…

数据在内存中存储☞(超详解)

目录 一.数据类型大家族 1.了解类型的意义 2.数据类型大家族的分类 二.详解☞数据储存之整形 1.储存方式 &#xff08;1&#xff09;.原码反码补码的概念 &#xff08;2&#xff09;.原码反码补码出现的原因&#xff1a; 计算机中只有加法器没有减法器&#xff0c;所有只…

python数据分析:采集分析岗位数据,看看薪资的高低都受什么因素影响呢

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 在我们学习的时候,通常会产生疑问:这个行业前景好不好呢? 今天我们就用python的数据分析这个就业方向来举例 看一下都有哪些因素影响了薪资的高低呢&#xff1f; 数据采集 模块使用: reques…

VMware Workstation安装ESXI8.0

&#x1f388; 作者&#xff1a;互联网-小啊宇 &#x1f388; 简介&#xff1a; CSDN 运维领域创作者、阿里云专家博主。目前从事 Kubernetes运维相关工作&#xff0c;擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护…

php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02

php运算符&#xff0c;类型转换&#xff0c;打印输出语句相较于其他语言的特殊部分php运算符php的类型转换php打印输出语句php运算符 1.php运算符与其他高级语言相同的部分 算术运算符&#xff08;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%&#xff09;&#xff0…

进程间的8种通信方式

进程之间的通信方式有&#xff1a; 无名管道( pipe )、高级管道&#xff08;popen&#xff09;、有名管道&#xff08;named pipe&#xff09;、消息队列( message queue )、信号量( semophore ) 、信号 ( sinal ) 、共享内存( shared memory ) 、套接字( socket )。 1、无名管…

网络爬虫的危害与防御方法

爬虫程序是一种计算机程序&#xff0c;旨在通过执行自动化或重复性任务来模仿或替代人类的操作。爬虫程序执行任务的速度和准确性比真实用户高得多。爬虫程序在互联网上扮演着各种各样的角色&#xff0c;超过一半的网络流量是由爬虫程序产生的。有些爬虫程序非常有用&#xff0…

图形管道(投影,mvp)

1.坐标空间 •图形管道对3D空间中的场景进行了描述&#xff0c;并将其映射到显示空间上的2D投影。 2.本地坐标系&#xff08;LCS&#xff09; •存储多边形的顶点针对网格对象某个点位于&#xff0c;上或在物体附近 •促进建模灵活性: 转换LCS以生产基本对象形状;将坐标框架放…