From a013b5196a979e65a13d60667d0a4921bc42730a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= <2270033969@qq.com> Date: Sun, 1 Dec 2024 15:04:50 +0800 Subject: [PATCH] =?UTF-8?q?refactor(security):=20=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BD=BF=E7=94=A8=20messages=5Fzh=5FCN.prope?= =?UTF-8?q?rties=20=E5=9B=BD=E9=99=85=E5=8C=96=E6=96=87=E4=BB=B6=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PigxRemoteRegisteredClientRepository.java | 5 ++- .../PigxTocDefaultUserDetailsServiceImpl.java | 6 ++-- .../PigxTocMobileUserDetailsServiceImpl.java | 7 ++-- .../service/PigxUserDetailsService.java | 9 +++++- .../util/PigxSecurityMessageSourceUtil.java | 32 ------------------- .../errors/messages_zh_CN.properties | 2 ++ 6 files changed, 23 insertions(+), 38 deletions(-) delete mode 100644 pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/util/PigxSecurityMessageSourceUtil.java diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxRemoteRegisteredClientRepository.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxRemoteRegisteredClientRepository.java index 1d56eab6b..1289e49b4 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxRemoteRegisteredClientRepository.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxRemoteRegisteredClientRepository.java @@ -7,6 +7,7 @@ import com.pig4cloud.pigx.admin.api.entity.SysOauthClientDetails; import com.pig4cloud.pigx.admin.api.feign.RemoteClientDetailsService; import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; +import com.pig4cloud.pigx.common.core.util.MsgUtils; import com.pig4cloud.pigx.common.core.util.RetOps; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; @@ -37,6 +38,8 @@ import java.util.Optional; @RequiredArgsConstructor public class PigxRemoteRegisteredClientRepository implements RegisteredClientRepository { + private final static String NOTFOUND_CLIENT_ERROR_CODE = "RegisteredClient.notFound"; + /** * 刷新令牌有效期默认 30 天 */ @@ -104,7 +107,7 @@ public class PigxRemoteRegisteredClientRepository implements RegisteredClientRep .of(clientDetailsService.getClientDetailsById(clientId)) .getData() .orElseThrow(() -> new OAuth2AuthorizationCodeRequestAuthenticationException( - new OAuth2Error("客户端查询异常,请检查数据库链接"), null)); + new OAuth2Error(MsgUtils.getSecurityMessage(NOTFOUND_CLIENT_ERROR_CODE)), null)); clientDetails = fetchedClientDetails; Optional.ofNullable(cache).ifPresent(c -> c.put(clientId, fetchedClientDetails)); diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocDefaultUserDetailsServiceImpl.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocDefaultUserDetailsServiceImpl.java index 9fbb28173..3ead93058 100755 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocDefaultUserDetailsServiceImpl.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocDefaultUserDetailsServiceImpl.java @@ -24,6 +24,7 @@ import com.pig4cloud.pigx.common.core.constant.CacheConstants; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum; +import com.pig4cloud.pigx.common.core.util.MsgUtils; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.core.util.RetOps; import com.pig4cloud.pigx.common.core.util.WebUtils; @@ -51,6 +52,7 @@ import java.util.*; @RequiredArgsConstructor public class PigxTocDefaultUserDetailsServiceImpl implements PigxUserDetailsService { + private final CacheManager cacheManager; private final Optional remoteAppUserServiceOptional; @@ -84,10 +86,10 @@ public class PigxTocDefaultUserDetailsServiceImpl implements PigxUserDetailsServ UserDetails getUserDetailsAppUser(R result) { // @formatter:off return RetOps.of(result) - .assertSuccess(r -> new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodes.SERVER_ERROR, "用户名或密码错误",null))) + .assertSuccess(r -> new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodes.SERVER_ERROR, MsgUtils.getSecurityMessage(NOTFOUND_USER_ERROR_CODE),null))) .getData() .map(this::convertUserDetailsAppUser) - .orElseThrow(() -> new UsernameNotFoundException("用户不存在")); + .orElseThrow(() -> new UsernameNotFoundException(MsgUtils.getSecurityMessage(NOTFOUND_USER_ERROR_CODE))); // @formatter:on } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocMobileUserDetailsServiceImpl.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocMobileUserDetailsServiceImpl.java index aa0f42a83..01327a8b0 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocMobileUserDetailsServiceImpl.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxTocMobileUserDetailsServiceImpl.java @@ -23,6 +23,7 @@ import com.pig4cloud.pigx.app.api.feign.RemoteAppUserService; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum; +import com.pig4cloud.pigx.common.core.util.MsgUtils; import com.pig4cloud.pigx.common.core.util.R; import com.pig4cloud.pigx.common.core.util.RetOps; import com.pig4cloud.pigx.common.core.util.WebUtils; @@ -39,6 +40,8 @@ import org.springframework.security.oauth2.core.OAuth2ErrorCodes; import java.util.*; +import static com.pig4cloud.pigx.common.security.service.PigxTocDefaultUserDetailsServiceImpl.NOTFOUND_USER_ERROR_CODE; + /** * 用户详细信息 * @@ -74,10 +77,10 @@ public class PigxTocMobileUserDetailsServiceImpl implements PigxUserDetailsServi UserDetails getUserDetailsAppUser(R result) { // @formatter:off return RetOps.of(result) - .assertSuccess(r -> new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodes.SERVER_ERROR, "用户信息获取失败",null))) + .assertSuccess(r -> new OAuth2AuthenticationException(new OAuth2Error(OAuth2ErrorCodes.SERVER_ERROR,MsgUtils.getSecurityMessage(NOTFOUND_USER_ERROR_CODE),null))) .getData() .map(this::convertUserDetailsAppUser) - .orElseThrow(() -> new UsernameNotFoundException("用户不存在")); + .orElseThrow(() -> new UsernameNotFoundException(MsgUtils.getSecurityMessage(NOTFOUND_USER_ERROR_CODE))); // @formatter:on } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsService.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsService.java index b3eec7f70..69f8eeeef 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsService.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/service/PigxUserDetailsService.java @@ -22,6 +22,7 @@ import com.pig4cloud.pigx.admin.api.entity.SysUser; import com.pig4cloud.pigx.common.core.constant.CommonConstants; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum; +import com.pig4cloud.pigx.common.core.util.MsgUtils; import org.springframework.core.Ordered; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; @@ -37,6 +38,12 @@ import java.util.*; */ public interface PigxUserDetailsService extends UserDetailsService, Ordered { + /** + * Notfound 用户错误代码 + */ + String NOTFOUND_USER_ERROR_CODE = "UserDetailsService.notFound"; + + /** * 是否支持此客户端校验 * @@ -67,7 +74,7 @@ public interface PigxUserDetailsService extends UserDetailsService, Ordered { // @formatter:off return userInfoOptional .map(this::convertUserDetails) - .orElseThrow(() -> new UsernameNotFoundException("用户不存在")); + .orElseThrow(() -> new UsernameNotFoundException(MsgUtils.getSecurityMessage(NOTFOUND_USER_ERROR_CODE))); // @formatter:on } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/util/PigxSecurityMessageSourceUtil.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/util/PigxSecurityMessageSourceUtil.java deleted file mode 100644 index 6e7a7f58a..000000000 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/util/PigxSecurityMessageSourceUtil.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.pig4cloud.pigx.common.security.util; - -import org.springframework.context.support.MessageSourceAccessor; -import org.springframework.context.support.ReloadableResourceBundleMessageSource; - -import java.util.Locale; - -/** - * @author lengleng - * @date 2020/9/4 - *

- * @see org.springframework.security.core.SpringSecurityMessageSource pigx 框架自身异常处理, - * 建议所有异常都使用此工具类型 避免无法复写 SpringSecurityMessageSource - */ -public class PigxSecurityMessageSourceUtil extends ReloadableResourceBundleMessageSource { - - // ~ Constructors - // =================================================================================================== - - public PigxSecurityMessageSourceUtil() { - setBasename("classpath:messages/messages"); - setDefaultLocale(Locale.CHINA); - } - - // ~ Methods - // ======================================================================================================== - - public static MessageSourceAccessor getAccessor() { - return new MessageSourceAccessor(new PigxSecurityMessageSourceUtil()); - } - -} \ No newline at end of file diff --git a/pigx-common/pigx-common-security/src/main/resources/errors/messages_zh_CN.properties b/pigx-common/pigx-common-security/src/main/resources/errors/messages_zh_CN.properties index 5d459f852..21f9888d7 100644 --- a/pigx-common/pigx-common-security/src/main/resources/errors/messages_zh_CN.properties +++ b/pigx-common/pigx-common-security/src/main/resources/errors/messages_zh_CN.properties @@ -54,6 +54,8 @@ DigestAuthenticationFilter.nonceNotTwoTokens=Nonce\u5E94\u8BE5\u7531\u4E24\u90E8 DigestAuthenticationFilter.usernameNotFound=\u7528\u6237\u540D{0}\u672A\u627E\u5230 JdbcDaoImpl.noAuthority=\u6CA1\u6709\u4E3A\u7528\u6237{0}\u6307\u5B9A\u89D2\u8272 JdbcDaoImpl.notFound=\u672A\u627E\u5230\u7528\u6237{0} +UserDetailsService.notFound=\u7528\u6237\u4E0D\u5B58\u5728 +RegisteredClient.notFound=\u5BA2\u6237\u7AEF\u4FE1\u606F\u67E5\u8BE2\u5931\u8D25 LdapAuthenticationProvider.badCredentials=\u574F\u7684\u51ED\u8BC1 LdapAuthenticationProvider.credentialsExpired=\u7528\u6237\u51ED\u8BC1\u5DF2\u8FC7\u671F LdapAuthenticationProvider.disabled=\u7528\u6237\u672A\u6FC0\u6D3B