From 8d659cff85d8cdbd1e373af24c4ffcef1684e5ae Mon Sep 17 00:00:00 2001 From: chenjun Date: Sat, 23 May 2020 23:04:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=97=A0=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=94=A8=E6=88=B7=E7=9A=84=E8=BA=AB=E4=BB=BD=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/PigxUserAuthenticationConverter.java | 2 +- .../listener/AuthenticationSuccessEventListener.java | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java index 96f0de22e..e32beeece 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxUserAuthenticationConverter.java @@ -100,7 +100,7 @@ public class PigxUserAuthenticationConverter implements UserAuthenticationConver return AuthorityUtils.commaSeparatedStringToAuthorityList(StringUtils .collectionToCommaDelimitedString((Collection) authorities)); } - throw new IllegalArgumentException("Authorities must be either a String or a Collection"); + return AuthorityUtils.NO_AUTHORITIES; } private void validateTenantId(Map map) { diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/listener/AuthenticationSuccessEventListener.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/listener/AuthenticationSuccessEventListener.java index be478ddc6..aa0e8ee5a 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/listener/AuthenticationSuccessEventListener.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/listener/AuthenticationSuccessEventListener.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.security.authentication.event.AuthenticationSuccessEvent; import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.User; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -46,7 +47,7 @@ public class AuthenticationSuccessEventListener implements ApplicationListener Date: Sat, 23 May 2020 23:36:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=81=A5=E5=A3=AE=E6=80=A7=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/common/data/datascope/DataScopeHandle.java | 4 ++-- .../common/data/datascope/DataScopeInterceptor.java | 9 +++++++-- .../data/datascope/PigxDefaultDatascopeHandle.java | 13 ++++++++++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeHandle.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeHandle.java index 011607099..bdcd56dc7 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeHandle.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeHandle.java @@ -30,8 +30,8 @@ public interface DataScopeHandle { /** * 计算用户数据权限 * - * @param deptList - * @return + * @param deptList 部门ID,如果为空表示没有任何数据权限。 + * @return 返回true表示无需进行数据过滤处理,返回false表示需要进行数据过滤 */ Boolean calcScope(List deptList); } diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeInterceptor.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeInterceptor.java index 7b0b262d6..379d11e9d 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeInterceptor.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeInterceptor.java @@ -78,8 +78,13 @@ public class DataScopeInterceptor extends AbstractSqlParserHandler implements In if (CollUtil.isEmpty(deptIds) && dataScopeHandle.calcScope(deptIds)) { return invocation.proceed(); } - String join = CollectionUtil.join(deptIds, ","); - originalSql = "select * from (" + originalSql + ") temp_data_scope where temp_data_scope." + scopeName + " in (" + join + ")"; + + if(deptIds.isEmpty()){ + originalSql = "select * from (" + originalSql + ") temp_data_scope where 1 = 2"; + }else{ + String join = CollectionUtil.join(deptIds, ","); + originalSql = "select * from (" + originalSql + ") temp_data_scope where temp_data_scope." + scopeName + " in (" + join + ")"; + } metaObject.setValue("delegate.boundSql.sql", originalSql); return invocation.proceed(); } diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDatascopeHandle.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDatascopeHandle.java index 2a1191256..4c942cd4a 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDatascopeHandle.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/PigxDefaultDatascopeHandle.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.common.data.datascope; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.admin.api.entity.SysDeptRelation; import com.pig4cloud.pigx.admin.api.entity.SysRole; @@ -57,10 +58,16 @@ public class PigxDefaultDatascopeHandle implements DataScopeHandle { .filter(authority -> authority.startsWith(SecurityConstants.ROLE)) .map(authority -> authority.split(StrUtil.UNDERLINE)[1]) .collect(Collectors.toList()); - + // 当前用户的角色为空 + if(CollectionUtil.isEmpty(roleIdList)){ + return false; + } SysRole role = dataScopeService.getRoleList(roleIdList).getData().stream() - .min(Comparator.comparingInt(SysRole::getDsType)).get(); - + .min(Comparator.comparingInt(SysRole::getDsType)).orElse(null); + // 角色有可能已经删除了 + if(role == null){ + return false; + } Integer dsType = role.getDsType(); // 查询全部 if (DataScopeTypeEnum.ALL.getType() == dsType) {