首页 > 其他分享 >【JNPF】关于数据授权

【JNPF】关于数据授权

时间:2024-10-23 17:00:19浏览次数:1  
标签:utf8mb3 COMMENT JNPF DEFAULT ci 关于 授权 NULL COLLATE

 

一、平台设置流程

可以参考官方视频的设置:

https://www.bilibili.com/video/BV1cE4HexEfZ

1、先进入 系统管理 - 系统菜单,选择应用后点击【菜单管理】:

 2、对应展示的每个菜单,选择【数据权限】:

 3、业务数据权限配置

一、配置数据源连接,选择业务对应的数据源

二、配置字段条件,允许一个字段配置多种条件

三、切换到方案管理,每个方案可以把字段条件进行组合为一个方案

 

4、把数据权限分配到角色中

有两种分配方式

一、系统权限 - 角色管理 - 角色权限

 

二、系统权限 - 权限管理 - 批量设置

  

二、表结构和代码分析

数据权限涉及到了三张表:

对应上面的三个步骤,数据源 -> 字段管理 -> 数据权限

CREATE TABLE `base_moduledataauthorize` (
  `F_Id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '自然主键',
  `F_FullName` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '字段名称',
  `F_EnCode` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '字段编号',
  `F_Type` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '字段类型',
  `F_ConditionSymbol` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '条件符号',
  `F_ConditionSymbolJson` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '条件符号Json',
  `F_ConditionText` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '条件内容',
  `F_PropertyJson` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '扩展属性',
  `F_Description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '描述',
  `F_SortCode` bigint DEFAULT NULL COMMENT '排序',
  `F_EnabledMark` int DEFAULT NULL COMMENT '有效标志',
  `F_CreatorTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_CreatorUserId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '创建用户',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '修改时间',
  `F_LastModifyUserId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '修改用户',
  `F_DeleteMark` int DEFAULT NULL COMMENT '删除标志',
  `F_DeleteTime` datetime DEFAULT NULL COMMENT '删除时间',
  `F_DeleteUserId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '删除用户',
  `F_ModuleId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '功能主键',
  `F_FieldRule` int DEFAULT NULL COMMENT '字段规则',
  `F_ChildTableKey` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '子表规则key',
  `F_BindTable` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '绑定表格Id',
  `F_TenantId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '租户id',
  PRIMARY KEY (`F_Id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='数据权限配置';


CREATE TABLE `base_moduledataauthorizelink` (
  `F_Id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '自然主键',
  `F_LinkId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据源连接',
  `F_LinkTables` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '连接表名',
  `F_ModuleId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '菜单主键',
  `F_Type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限类型',
  `F_TenantId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '租户id',
  PRIMARY KEY (`F_Id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据权限连接管理';

CREATE TABLE `base_moduledataauthorizescheme` (
  `F_Id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '自然主键',
  `F_EnCode` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '方案编号',
  `F_FullName` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '方案名称',
  `F_ConditionJson` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '条件规则Json',
  `F_ConditionText` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '条件规则描述',
  `F_Description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '描述',
  `F_SortCode` bigint DEFAULT NULL COMMENT '排序',
  `F_EnabledMark` int DEFAULT NULL COMMENT '有效标志',
  `F_CreatorTime` datetime DEFAULT NULL COMMENT '创建时间',
  `F_CreatorUserId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '创建用户',
  `F_LastModifyTime` datetime DEFAULT NULL COMMENT '修改时间',
  `F_LastModifyUserId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '修改用户',
  `F_DeleteMark` int DEFAULT NULL COMMENT '删除标志',
  `F_DeleteTime` datetime DEFAULT NULL COMMENT '删除时间',
  `F_DeleteUserId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '删除用户',
  `F_ModuleId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '功能主键',
  `F_AllData` int DEFAULT NULL COMMENT '全部数据标识',
  `F_TenantId` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '租户id',
  PRIMARY KEY (`F_Id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 ROW_FORMAT=DYNAMIC COMMENT='数据权限方案';

 

然后就是怎么调用权限解析的,看源码找了半天,发现消息发送业务是有这么一个使用方法:

 

内部实现如下:

可以看到先是获取了QueryWrapper对象,调用了一个获取权限对象的方法

从权限对象获得ResourceList,这个ResourceList需要过滤出当前这个moduleId的才行

而下一步都是对Resource的信息的记录转换成SQL查询条件

 

关于ResourceList是通过这里查询的

 

到最后的SQL实现就是通过角色id查询的,而最后的

base_moduledataauthorizescheme表就是权限方案,可以看到是通过获取方案记录进行实现的

 <select id="findResource" parameterType="String" resultMap="ResourceVO">
        SELECT * FROM base_moduledataauthorizescheme WHERE F_Id IN (SELECT F_ItemId FROM base_authorize WHERE F_ObjectId IN (${objectId}) AND F_ItemType = 'resource') and F_EnabledMark = 1  Order by F_SortCode desc
    </select>

  

 

标签:utf8mb3,COMMENT,JNPF,DEFAULT,ci,关于,授权,NULL,COLLATE
From: https://www.cnblogs.com/mindzone/p/18496321

相关文章

  • 关于项目引用onlyoffice作为在线office文件预览与编辑的笔记(二)
    基于上一篇中已经创建了onlyoffice容器,所以该篇讲述如何升级容器配置1.修改onlyoffice20并发限制方案一进入容器修改六个app.js文件find./-nameapp.js目录下所有app.js文件,对代码行进行修改,只是经过简单的测试,希望发现问题及时回复。(this._state.licenseType=e),/......
  • 关于项目引用onlyoffice作为在线office文件预览与编辑的笔记(一)
    由于自己项目已采用该方案,故此记录一下过程一初始安装拉取5.4.2.46版本onlyoffice/documentserver镜像dockerpullonlyoffice/documentserver:5.4.2.46该版本是支持20个连接数破解限制的最后一个版本,也是对中文字体界面显示中文不乱码支持比较好的一个版本。创建容器创建......
  • iFind Data Recovery Enterprise 中文授权版
    这是一款数据恢复工具。无论是硬盘、U盘、SD卡,还是已删除分区或无法识别的USB闪存驱动器,iFindDataRecovery都能应对自如。它支持超过2000种文件格式和文件系统,包括NTFS、FAT、FAT16、FAT32、EXFAT、HFS+和APFS,几乎涵盖了所有主流设备。该版本已授权,可以使用全部功能......
  • 关于wps卸载不干净留下的office6文件夹删除问题
    直接说操作0.问题描述:wps卸载后,office6文件夹无法删除,删除dll文件失败,并且一直显示该文件已在Windows资源管理器中打开,不知道被注入哪个进程中,导致无法删除1.点击office6文件夹,进去有个一堆数字的11.213....文件夹,点进去,会发现两个dll文件大概如下qingnse64.dll等文件2.这......
  • 关于MQTT的调研
    MQTT也可以理解成是一种消息队列。但是区别其它的消息队列,MQTT主要是针对低带宽高延迟的环境设计的,所以比较适合一些物联网的设备使用。相对来说也会比较轻量一点。MQTT也针对物联网领域的安全方便做了一些设计。EMQX在EMQX(https://cloud.emqx.com/console/)注册了一个免费的服务......
  • 关于联网交互
    进程间的通讯经常需要走网络。网络的交互方式有很多,最基础的就是Socket,.NET平台还封装了TcpListener和TcpClient,跟Socket相差不大,属于简单封装。另外我们公司常用的交互方式还有ZeroMQ和RabbitMQ。其实C++那边用ZeroMQ比较多。C++开发经常也开前后台,有人负责前台的界面部分,可能......
  • 腾讯地图web端请求报错113.该功能未授权
    问题描述:请求地址:https://apis.map.qq.com/jsapi?qt=geoc&addr=%2C%2C%2C&key=你的key&output=jsonp&pf=jsapi&ref=jsapi&cb=qq.maps._svcb3.geocoder0报错:qq.maps._svcb3.geocoder0&&qq.maps._svcb3.geocoder0({"status":113,"me......
  • C#关于WebSocket的使用
    因为主要做CS开发,所以之前没怎么涉及WebSocket的使用。前面有个项目,想着前端能不能直接跟我这边交互,所以研究了一下.NET的WebSocket的使用。客户端连接客户端的连接相对比较简单,可以直接使用ClientWebSocket即可。示例代码:usingSystem.Net.WebSockets;usingSystem.Threadin......
  • 推荐一些关于计算机网络和 TCP/IP 协议的书籍
    以下是一些关于计算机网络和TCP/IP协议的优秀书籍推荐:《TCP/IP详解》:作者为W.RichardStevens,这是一套经典之作,分为三卷。《TCP/IP详解卷1:协议》:详细解析了TCP/IP协议的工作原理和实现细节,对协议族中的各个层次和协议,如IP、TCP、UDP等进行了深入剖析,适合想......
  • 关于软件开发中UI相关的问题
    因为个人的使用习惯,我现在经常是笔记本+显示器的使用方式。然后家里用的是27寸的4K显示器,显示器的缩放比例一般是设置成150%。使用的过程中发现很多的软件,在UI显示上都会出现一些问题。主要是两点:1、多屏/横竖屏。一些软件在有多个显示屏,特别是几个显示屏的分辨率不一样,或者有横......