若依 数据权限图文详细理解及改造

这篇具有很好参考价值的文章主要介绍了若依 数据权限图文详细理解及改造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据权限

所谓数据权限,就是根据不同角色的登录用户,查看不同的列表数据

若依数据权限

若依的数据权限也是基于角色实现的,支持五种权限模式,按权限大小一次排列:

  • 全部数据权限,表示拥有所有部门的数据权限 ·
  • 自定数据权限,表示拥有指定的若干部门的数据权限
  • 本部门数据权限,表示仅拥有用户所属部门(不包括子部门)的数据权限
  • 本部门及以下数据权限,表示仅拥有用户所属部门和所有子部门的数据权限
  • 仅本人数据权限,表示仅拥有用户本人的数据权限

页面设置数据权限

若依 数据权限图文详细理解及改造
若依设置数据权限不止页面需要设置,后端也要设置,只设置页面不设置后端就没用!!,对于这个,后面会有详细解释

后端设置数据权限

若依后端设置数据权限非常简单,使用 @DataScope 注解即可实现数据权限
@DataScope 注解下有三种属性:deptAlias ,userAlias,permission
若依 数据权限图文详细理解及改造

注意:

使用此注解的deptAlias 和 userAlias 属性 需数据库有dept_id或者user_id 并且在SQL后面拼接 ${params.dataScope} 而且是实体类需继承BaseEntity 类所以无法支持mybatis-Plus
若依 数据权限图文详细理解及改造
因为数据权限的实质还是拼接SQL,而params.dataScope就是框架预留的拼接。而 params就在BaseEntity 中
若依 数据权限图文详细理解及改造

deptAlias

根据部门设置数据权限

  1. 首先在角色管理中设置本部门数据权限或者本部门及以下数据权限
    若依 数据权限图文详细理解及改造
  2. 然后在后端接口实现类上添加 @DataScope(deptAlias = “t1”) ,此t1是你要查询的数据表的别名,如果是单表查询的话即可不设置值,直接 @DataScope(deptAlias) 即可。
    若依 数据权限图文详细理解及改造
    3.在页面上查看数据

admin查看(admin能查看所有数据):

若依 数据权限图文详细理解及改造

切换供应商账号(供应商设置的自定义数据权限,能看到供应商和施工方数据):

若依 数据权限图文详细理解及改造
若依 数据权限图文详细理解及改造

切换服务商账号(服务商只能看到服务商数据):

若依 数据权限图文详细理解及改造
若依 数据权限图文详细理解及改造

userAlias

userAlias 同deptAlias 这里就不多啰嗦了(主表内必须有user_id)

* permission

着重讲一下permission,permission的定义是 权限字符(用于多个角色匹配符合要求的权限)默认根据权限注解@ss获取,多个权限用逗号分隔开来,如果注解没有写的话,就默认是你角色的权限
若依 数据权限图文详细理解及改造
这里我改造了一下,因为我们业务需要,比如一个项目是a部门创建的,这个项目理应只有a部门才能看到,项目需要一个审批人,而这个审批人是b部门下的或者其他人,所以登录人如果是审批人也应该看到,我们审批人字段为approval_id,可能还会有经办人或者什么什么各种人,所以改造了一下permission属性,使得也能够自动拼接在系统数据权限的后面
若依 数据权限图文详细理解及改造

if ( StringUtils.isNotEmpty(permission) && !permission.equals(PermissionContextHolder.getContext())){
       //自定义筛选字段
       sqlString.append(StringUtils.format(" OR {} = {}", permission, user.getUserId()));
}

实现类:
若依 数据权限图文详细理解及改造
自动拼接:
若依 数据权限图文详细理解及改造
既拼接了部门权限,又拼接了我们自定义字段的权限,而且是or 只要满足一个即可查询出数据
若依 数据权限图文详细理解及改造
使得供应商创建的原本供应商才能看到的数据,因为登录人是此项目的审批人,也能看到数据

DataScopeAspect

DataScopeAspect是@DataScope的切面类,也是若依框架实现拼接权限SQL的核心
dataScopeFilter 方法,是主要方法
若依 数据权限图文详细理解及改造
里面的常量即为我们在页面上设置的不同数据权限
若依 数据权限图文详细理解及改造
如果表里面没有dept_id或者user_id的话,比如只有createdBy 创建人id,实在需要改造的话,也可以把这里SQL里面的user_id改成你想要的createdBy 字段

注:以上所有数据及名称都经过处理,均不涉及公司机密文章来源地址https://www.toymoban.com/news/detail-426891.html

到了这里,关于若依 数据权限图文详细理解及改造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 若依框架基于@PreAuthorize注解的权限控制

    目录 一、Java注解(Annotation) 1. 概述         2. Annotation通用定义 (1)@interface (2)@Documented (3)@Target(ElementType.TYPE) (4)@Retention(RetentionPolicy.RUNTIME) 二、基于注解的权限控制 1. 数据权限  2. 角色权限         Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注

    2023年04月24日
    浏览(59)
  • 若依的权限管理 v-hasPermi

    v-hasPermi 用法: 然后在后台管理系统的菜单栏中找到这个模块。 把权限字符串 managementDocument-note-add 复制进去 点击确定 然后这个按钮的权限就设置好了 希望有所帮助

    2024年02月13日
    浏览(33)
  • 《数据结构》八大排序(详细图文分析讲解)

    目录 排序 排序的应用       排序简介 排序的分类 排序算法的好坏评判 冒泡排序法  思路分析 代码实现   选择排序法 思路分析 代码实现   插入排序 思路分析 代码实现  希尔排序 思路分析 代码演示  归并排序法  思路分析 代码演示  快速排序  思路分析 代码实现 

    2024年02月03日
    浏览(48)
  • linux系统数据盘挂载【图文详细教程】

    重点前言:  挂载前,最好是新的服务器,不要安装宝塔!!! 我之前先安装宝塔,再挂载就有点费劲。需要考虑原来文件是否受损。 当前教程属于新服务器下,先挂载数据盘!!!!!!!!!!!!!  挂载步骤: 查看磁盘信息  将数据盘分区  格式化数据盘  创建一

    2024年02月07日
    浏览(42)
  • 大数据相关软件的安装指南(超详细的图文教程)

    VMware的安装 - 博客地址 - 内含: 十一、Linux操作系统的第三种获取方式; 十二、vmware安装操作系统的步骤 VMware的配置 - 博客地址 - 内含: 4、VMware的安装; 5、在VMware中安装CentOS Linux系统中常用软件的安装 - 博客地址 - 内含: 1、yum仓库; 2、在Linux中安装JDK; 3、在Linux中安装

    2024年02月02日
    浏览(34)
  • 【云计算与大数据技术】大数据概念和发展背景讲解(图文解释 超详细)

    大数据是一个不断发展的概念,可以指任何体量或负载下那个超出常规数据处理方法和处理能力的数据,数据本身可以是结构化,半结构化甚至是非结构化的,随着物联网技术与可穿戴设备的飞速发展,数据规模变得越来越大,内容越来越复杂,更新速度越来越快,大数据和

    2024年02月03日
    浏览(47)
  • RuoYi若依管理系统最新版 基于SpringBoot的权限管理系统

    RuoYi是一个后台管理系统,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。 本地版本为截止2023-9-10最新版本V4.7.7 完全响应式布局(支持电脑、平板、手机等所

    2024年02月09日
    浏览(42)
  • 【数据结构——9大基础排序】一文掌握九大经典排序(配有详细图文说明!!!)

    算法基本思想:(从大到小排序) 在一个 非递减 的有序数组中,要新增一个元素 x ,有两个方法: 1.从数组的头部开始向后遍历,寻找 第一个比x 大 的元素 y ,从y元素开始的所有元素全部向后移动,最后将x元素插入数组。(×) 2.从数组的尾部开始向后向前遍历,寻找 第

    2024年02月08日
    浏览(45)
  • 【数据结构】时间复杂度(详细解释,例子分析,易错分析,图文并茂)

    🎊专栏【数据结构】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【星辰大海】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰    目录 ⭐时间复杂度分类 🍔 方法 🎈平方阶 🎈立方阶  🎈对数阶 🍔例子 ✨常数时间复杂度 O(1) 🎈数组读取、索引和

    2023年04月20日
    浏览(55)
  • 计算机基础--->数据结构(8)【B树、B+树<超详细图文>】

    B树(B-Tree)是一种自平衡的搜索树,又称平衡多路查找树,主要用于系统中大量数据的读和写操作。B树的特点是能保持数据有序,这使得在B树中进行查找、顺序访问、插入和删除等操作都非常高效。 B树中单一节点拥有的最多子结点的数量称为B树的阶,一个m阶B树的主要特

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包