ruoyi中数据权限管理所用sql语句及作用

本文详细描述了一个IT系统的权限管理流程,包括安全性的SQL操作处理、不同类型的权限如全部权限、自定义权限、部门权限等,以及如何根据用户类型和权限设置过滤数据库查询结果。

目录

总体流程

不同权限类型

全部权限

自定义权限

部门权限

部门及以下权限

仅本人权限


总体流程

首先保证安全性,拼接权限sql前先清空params.dataScope参数防止注入

然后判断用户类型,如果是超级管理员则不查看权限类型直接给数据,如果是普通用户则查看用户权限类型

再根据权限类型生成对应的SQL语句,修改原始语句并执行

最后返回查询结果给调用方

不同权限类型

全部权限

如果为全部类型,则不修改SQL语句,返回所有数据

自定义权限

deptAlias 是部门表的别名,使用StringUtils.append()方法进行拼接。此条件的含义是,如果某个数据行的dept_id在角色所关联的部门ID集合中,那么该数据行符合自定义权限规则。

部门权限

deptAlias 是部门表的别名,user.getDeptId()是用户的id,在部门表中获取到对应dept_id的数据。

部门及以下权限

筛选出部门ID等于当前用户所属部门ID(user.getDeptId()),部门ID在当前用户所属部门的后代部门ID集合中(通过 find_in_set() 函数实现)

仅本人权限

首先获取用户ID(user.getUserId()),然后判断是否存在用户名:通过判断 userAlias 是否不为空或不为null(StringUtils.isNotBlank(userAlias)),确定是否存在用户名。

如果存在用户名,则根据用户名来筛选出对应数据

如果不存在用户名,则不查询任何数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值