From 9f89df5f86c7188cdfa8d879cf1ccf7b223ff31f Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Thu, 20 Apr 2023 22:08:19 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E8=B0=83=E6=95=B4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/ForbiddenException.java | 2 +- .../security/exception/InvalidException.java | 2 +- .../exception/KiccAuth2Exception.java | 4 +++ .../security/exception/MethodNotAllowed.java | 2 +- .../exception/SecurityCheckedException.java | 36 +++++++++++++++++++ .../exception/ServerErrorException.java | 2 +- .../exception/TokenInvalidException.java | 2 +- .../exception/UnauthorizedException.java | 2 +- .../KiccDaoAuthenticationProvider.java | 2 -- .../KiccWebResponseExceptionTranslator.java | 9 +++-- .../impl/KiccAppUserDetailsServiceImpl.java | 4 +-- .../impl/KiccUserDetailsServiceImpl.java | 4 +-- 12 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/SecurityCheckedException.java diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ForbiddenException.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ForbiddenException.java index 83258b9e..1dbbe1f2 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ForbiddenException.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ForbiddenException.java @@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus; public class ForbiddenException extends KiccAuth2Exception { public ForbiddenException(String msg, Throwable t) { - super(msg); + super(msg, t); } @Override diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/InvalidException.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/InvalidException.java index 79b42d27..c0e9d340 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/InvalidException.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/InvalidException.java @@ -14,7 +14,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; public class InvalidException extends KiccAuth2Exception { public InvalidException(String msg, Throwable t) { - super(msg); + super(msg, t); } @Override diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2Exception.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2Exception.java index 47b691bf..e03b6f57 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2Exception.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/KiccAuth2Exception.java @@ -22,6 +22,10 @@ public class KiccAuth2Exception extends OAuth2Exception { super(msg); } + public KiccAuth2Exception(String msg, Throwable t) { + super(msg, t); + } + public KiccAuth2Exception(String msg, String errorCode) { super(msg); this.errorCode = errorCode; diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/MethodNotAllowed.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/MethodNotAllowed.java index 3b963260..d7822469 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/MethodNotAllowed.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/MethodNotAllowed.java @@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus; public class MethodNotAllowed extends KiccAuth2Exception { public MethodNotAllowed(String msg, Throwable t) { - super(msg); + super(msg, t); } @Override diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/SecurityCheckedException.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/SecurityCheckedException.java new file mode 100644 index 00000000..ad7ca452 --- /dev/null +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/SecurityCheckedException.java @@ -0,0 +1,36 @@ +package com.cloud.kicc.common.security.exception; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import org.springframework.http.HttpStatus; + +/** + *

+ * 安全检查异常 + * 可绕过前端设置的状态码提示消息 + *

+ * + * @Author: entfrm开发团队-王翔 + * @Date: 2022/2/18 + */ +@JsonSerialize(using = KiccAuth2ExceptionSerializer.class) +public class SecurityCheckedException extends KiccAuth2Exception { + + public SecurityCheckedException(String msg) { + super(msg); + } + + public SecurityCheckedException(String msg, Throwable t) { + super(msg, t); + } + + @Override + public String getOAuth2ErrorCode() { + return "checked_not_pass"; + } + + @Override + public int getHttpErrorCode() { + return HttpStatus.NETWORK_AUTHENTICATION_REQUIRED.value(); + } + +} diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ServerErrorException.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ServerErrorException.java index 679fba60..64fefb95 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ServerErrorException.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/ServerErrorException.java @@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus; public class ServerErrorException extends KiccAuth2Exception { public ServerErrorException(String msg, Throwable t) { - super(msg); + super(msg, t); } @Override diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/TokenInvalidException.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/TokenInvalidException.java index 227c07b5..3100024b 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/TokenInvalidException.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/TokenInvalidException.java @@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus; public class TokenInvalidException extends KiccAuth2Exception { public TokenInvalidException(String msg, Throwable t) { - super(msg); + super(msg, t); } @Override diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnauthorizedException.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnauthorizedException.java index 76aa5b48..f416757a 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnauthorizedException.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/exception/UnauthorizedException.java @@ -15,7 +15,7 @@ import org.springframework.http.HttpStatus; public class UnauthorizedException extends KiccAuth2Exception { public UnauthorizedException(String msg, Throwable t) { - super(msg); + super(msg, t); } @Override diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/KiccDaoAuthenticationProvider.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/KiccDaoAuthenticationProvider.java index 24fbdab4..4d4c8cc0 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/KiccDaoAuthenticationProvider.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/grant/provider/KiccDaoAuthenticationProvider.java @@ -112,8 +112,6 @@ public class KiccDaoAuthenticationProvider extends AbstractUserDetailsAuthentica throw ex; } catch (InternalAuthenticationServiceException ex) { throw ex; - } catch (Exception ex) { - throw new InternalAuthenticationServiceException(ex.getMessage(), ex); } } diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java index ddb7908b..ed4d8186 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java @@ -55,14 +55,17 @@ public class KiccWebResponseExceptionTranslator implements WebResponseExceptionT return handleOAuth2Exception(new TokenInvalidException(ase.getMessage(), ase)); } - ase = (HttpRequestMethodNotSupportedException) throwableAnalyzer - .getFirstThrowableOfType(HttpRequestMethodNotSupportedException.class, causeChain); + ase = (HttpRequestMethodNotSupportedException) throwableAnalyzer.getFirstThrowableOfType(HttpRequestMethodNotSupportedException.class, causeChain); if (ase != null) { return handleOAuth2Exception(new MethodNotAllowed(ase.getMessage(), ase)); } - ase = (OAuth2Exception) throwableAnalyzer.getFirstThrowableOfType(OAuth2Exception.class, causeChain); + ase = (SecurityCheckedException) throwableAnalyzer.getFirstThrowableOfType(SecurityCheckedException.class, causeChain); + if (ase != null) { + return handleOAuth2Exception(new SecurityCheckedException(ase.getMessage(), ase)); + } + ase = (OAuth2Exception) throwableAnalyzer.getFirstThrowableOfType(OAuth2Exception.class, causeChain); if (ase != null) { return handleOAuth2Exception((OAuth2Exception) ase); } diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java index 6781a0b3..1cad19e1 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java @@ -3,6 +3,7 @@ package com.cloud.kicc.common.security.service.impl; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.data.entity.KiccUser; +import com.cloud.kicc.common.security.exception.SecurityCheckedException; import com.cloud.kicc.common.security.service.KiccUserDetailsService; import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.feign.RemoteUserService; @@ -10,7 +11,6 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; /** *

@@ -36,7 +36,7 @@ public class KiccAppUserDetailsServiceImpl implements KiccUserDetailsService { public UserDetails loadUserByUsername(String phone) { R result = remoteUserService.selectByPhone(phone, SecurityConstants.FROM_IN); if (result == null || result.getData() == null) { - throw new UsernameNotFoundException("手机号不存在!"); + throw new SecurityCheckedException("手机号不存在!"); } UserDetails userDetails = getUserDetails(result); return userDetails; diff --git a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java index 7625ab9c..f789c184 100644 --- a/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java +++ b/kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java @@ -2,6 +2,7 @@ package com.cloud.kicc.common.security.service.impl; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.SecurityConstants; +import com.cloud.kicc.common.security.exception.SecurityCheckedException; import com.cloud.kicc.common.security.service.KiccUserDetailsService; import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.feign.RemoteUserService; @@ -10,7 +11,6 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Primary; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UsernameNotFoundException; /** *

@@ -37,7 +37,7 @@ public class KiccUserDetailsServiceImpl implements KiccUserDetailsService { public UserDetails loadUserByUsername(String username) { R result = remoteUserService.selectByUserName(username, SecurityConstants.FROM_IN); if (result == null || result.getData() == null) { - throw new UsernameNotFoundException("用户不存在!"); + throw new SecurityCheckedException("用户不存在!"); } UserDetails userDetails = getUserDetails(result); return userDetails;