若依ruoyi数据权限详解

什么是数据权限?

简单的例子就是:

  1. 比如一张商品表goods,很多人添加数据,销售部的就可以看到这个数据,生产部的就看不到这个数据。

  2. 或者很多工厂向库存表添加数据,A工厂看A工厂的,B工厂也看自己的。

本质上说,是一种过滤的过程。我们查到了所有的商品表的信息,然后过滤出我们想要的。我们查到了所有库存表的信息,A工厂看A的,B工厂看B的。

若依使用数据权限的步骤:

  1. 向需要有数据权限的表中添加user_id 和 dept_id

在这里插入图片描述

  1. 添加角色
    在这里插入图片描述

  2. 给角色分配部门的数据权限
    在这里插入图片描述
    这个过程,就是向sys_role_dept表添加数据的过程‘
    在这里插入图片描述

  3. 新增用户,选择“软件工程”部门,并分配20230627的角色
    在这里插入图片描述

  4. 向业务层加此注解 @DataScope(deptAlias = “t”, userAlias = “u”)
    在这里插入图片描述

  5. 添加左连接和params参数,这个时候名字不要错了
    在这里插入图片描述

  6. 这个时候,就会过滤了。过滤的原理在查出所有数据的基础上,筛选出对应部门的数据
    在这里插入图片描述

其实本质上就是后面那句话的过滤:

t.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = 5 )

原本的sql应该是:
在这里插入图片描述

现在多了个条件
在这里插入图片描述
这就是数据权限

数据权限的原理

  1. 需要设置数据权限的表,添加user_id 和 dept_id 用于过滤数据
  2. 添加角色,分配数据权限的时候,会向sys_role_dept 中插入数据
  3. 新建用户,给用户分配部门与角色。目的是用户向需要添加数据权限的表(比如现在的这张表t_courseware)插入数据的时候,添加上user_id 和 dept_id,以及分配权限。
  4. 加上注解就是为了拼上sql。通过 t.dept_id IN ( SELECT dept_id FROM sys_role_dept WHERE role_id = 5 ) 实现数据权限。
  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值