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

数据权限

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

若依数据权限

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

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

页面设置数据权限

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

后端设置数据权限

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

注意:

使用此注解的deptAlias 和 userAlias 属性 需数据库有dept_id或者user_id 并且在SQL后面拼接 ${params.dataScope} 而且是实体类需继承BaseEntity 类所以无法支持mybatis-Plus
SQL
因为数据权限的实质还是拼接SQL,而params.dataScope就是框架预留的拼接。而 params就在BaseEntity 中
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 字段

注:以上所有数据及名称都经过处理,均不涉及公司机密

  • 32
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
K3wise数据表是一种用于存储和组织数据的图形化工具。它通常用于在电子表格软件中创建和管理各种类型的数据表格。使用K3wise数据表可以轻松地记录、跟踪和分析数据。 首先,K3wise数据表的主要特点是它的图形化界面。通过简单的拖拽和放置,用户可以轻松地创建表格,并设置各个列的名称和属性。这使得数据表的设计和构建变得非常直观和简单。 其次,K3wise数据表提供了丰富的功能来管理数据。用户可以通过添加、删除、编辑和排序表格中的行来持续更新数据。此外,用户还可以使用筛选器来快速查找特定条件下的数据。这些功能使得数据的更新和整理变得高效和便捷。 此外,K3wise数据表还具有数据分析的功能。通过使用各种内置的公式和计算功能,用户可以对数据进行各种统计和计算操作。例如,用户可以计算表格中某一列的总和、平均值、最大值和最小值等。这些功能可以帮助用户更好地理解和分析数据。 最后,K3wise数据表还具备数据分享和协作的能力。用户可以将表格导出为不同格式的文件,并将其分享给其他人。同时,多个用户可以同时对同一个数据表进行编辑和更新。这使得团队成员之间的合作变得更加高效和方便。 总的来说,K3wise数据表是一种强大的图形化工具,可用于创建、管理和分析数据表格。它的简单和直观的界面,丰富的功能以及数据分享和协作的能力,使得使用者可以更轻松地处理和使用数据

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值