作者 0慕容雪0
提交者 Gitee

update ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java.

DataScopeAspect,数据权限切面处理类中,用户多角色情况下,若所有角色都不包含传递过来的权限字符,这个时候sqlString也会为空,会导致用户拥有全部数据权限,所以要限制一下, 可以根据conditions集合是否为空,来判断循环时所有角色是否都是在判断权限字符时continue了。
复现方法: 在使用@DataScope注解时permission定义了值,这个值所有角色不包含。

Signed-off-by: 0慕容雪0 <ytu.mxh@163.com>
@@ -141,6 +141,12 @@ public class DataScopeAspect @@ -141,6 +141,12 @@ public class DataScopeAspect
141 conditions.add(dataScope); 141 conditions.add(dataScope);
142 } 142 }
143 143
  144 + // 多角色情况下,所有角色都不包含传递过来的权限字符,这个时候sqlString也会为空,所以要限制一下,不查询任何数据
  145 + if (StringUtils.isEmpty(conditions))
  146 + {
  147 + sqlString.append(StringUtils.format(" OR {}.dept_id = 0 ", deptAlias));
  148 + }
  149 +
144 if (StringUtils.isNotBlank(sqlString.toString())) 150 if (StringUtils.isNotBlank(sqlString.toString()))
145 { 151 {
146 Object params = joinPoint.getArgs()[0]; 152 Object params = joinPoint.getArgs()[0];