From 397c75fd959b76b783150f35e133c8dc18ebc8ba Mon Sep 17 00:00:00 2001 From: yangs <1692700664@qq.com> Date: Fri, 24 Mar 2023 16:30:31 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=8A=A0=E8=A7=A3=E5=AF=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/config/EncryptorConfig.java | 7 +--- .../encrypt/EncryptContextBuild.java | 38 +++++++++++++++++++ .../encrypt/MybatisDecryptInterceptor.java | 17 +-------- .../encrypt/MybatisEncryptInterceptor.java | 10 +---- 4 files changed, 43 insertions(+), 29 deletions(-) create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptContextBuild.java diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java index ed90d2067..737663e9c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/EncryptorConfig.java @@ -19,9 +19,6 @@ import org.springframework.context.annotation.Configuration; @ConditionalOnProperty(value = "mybatis-encryptor.enable", havingValue = "true") public class EncryptorConfig { - @Autowired - private EncryptorProperties properties; - @Bean public EncryptorManager encryptorManager() { return new EncryptorManager(); @@ -29,11 +26,11 @@ public class EncryptorConfig { @Bean public MybatisEncryptInterceptor mybatisEncryptInterceptor(EncryptorManager encryptorManager) { - return new MybatisEncryptInterceptor(encryptorManager, properties); + return new MybatisEncryptInterceptor(encryptorManager); } @Bean public MybatisDecryptInterceptor mybatisDecryptInterceptor(EncryptorManager encryptorManager) { - return new MybatisDecryptInterceptor(encryptorManager, properties); + return new MybatisDecryptInterceptor(encryptorManager); } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptContextBuild.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptContextBuild.java new file mode 100644 index 000000000..904261b11 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/EncryptContextBuild.java @@ -0,0 +1,38 @@ +package com.ruoyi.framework.encrypt; + +import cn.hutool.extra.spring.SpringUtil; +import com.ruoyi.common.annotation.EncryptField; +import com.ruoyi.common.encrypt.EncryptContext; +import com.ruoyi.common.enums.AlgorithmType; +import com.ruoyi.common.enums.EncodeType; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.config.properties.EncryptorProperties; + +import java.lang.reflect.Field; + +/** + * 构建加解密 + * @author Yang Shuai + * {@code @create} 2023/3/24:15:50 + * {@code @desc} | + **/ +public class EncryptContextBuild { + + /** + * 构建 + * + * @param field 字段 + * @return {@link EncryptContext} + */ + public static EncryptContext build(Field field) { + EncryptorProperties defaultProperties = SpringUtil.getBean(EncryptorProperties.class); + EncryptField encryptField = field.getAnnotation(EncryptField.class); + EncryptContext encryptContext = new EncryptContext(); + encryptContext.setAlgorithm(encryptField.algorithm() == AlgorithmType.DEFAULT ? defaultProperties.getAlgorithm() : encryptField.algorithm()); + encryptContext.setEncode(encryptField.encode() == EncodeType.DEFAULT ? defaultProperties.getEncode() : encryptField.encode()); + encryptContext.setPassword(StringUtils.isBlank(encryptField.password()) ? defaultProperties.getPassword() : encryptField.password()); + encryptContext.setPrivateKey(StringUtils.isBlank(encryptField.privateKey()) ? defaultProperties.getPrivateKey() : encryptField.privateKey()); + encryptContext.setPublicKey(StringUtils.isBlank(encryptField.publicKey()) ? defaultProperties.getPublicKey() : encryptField.publicKey()); + return encryptContext; + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java index 8755e7d46..2665102da 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisDecryptInterceptor.java @@ -2,12 +2,6 @@ package com.ruoyi.framework.encrypt; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; -import com.ruoyi.common.annotation.EncryptField; -import com.ruoyi.common.encrypt.EncryptContext; -import com.ruoyi.common.enums.AlgorithmType; -import com.ruoyi.common.enums.EncodeType; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.framework.config.properties.EncryptorProperties; import com.ruoyi.framework.manager.EncryptorManager; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -34,7 +28,7 @@ import java.util.*; public class MybatisDecryptInterceptor implements Interceptor { private final EncryptorManager encryptorManager; - private final EncryptorProperties defaultProperties; + @Override public Object intercept(Invocation invocation) throws Throwable { @@ -91,14 +85,7 @@ public class MybatisDecryptInterceptor implements Interceptor { * @return 加密后结果 */ private String decryptField(String value, Field field) { - EncryptField encryptField = field.getAnnotation(EncryptField.class); - EncryptContext encryptContext = new EncryptContext(); - encryptContext.setAlgorithm(encryptField.algorithm() == AlgorithmType.DEFAULT ? defaultProperties.getAlgorithm() : encryptField.algorithm()); - encryptContext.setEncode(encryptField.encode() == EncodeType.DEFAULT ? defaultProperties.getEncode() : encryptField.encode()); - encryptContext.setPassword(StringUtils.isBlank(encryptField.password()) ? defaultProperties.getPassword() : encryptField.password()); - encryptContext.setPrivateKey(StringUtils.isBlank(encryptField.privateKey()) ? defaultProperties.getPrivateKey() : encryptField.privateKey()); - encryptContext.setPublicKey(StringUtils.isBlank(encryptField.publicKey()) ? defaultProperties.getPublicKey() : encryptField.publicKey()); - return this.encryptorManager.decrypt(value, encryptContext); + return this.encryptorManager.decrypt(value, EncryptContextBuild.build(field)); } @Override diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java index e2ce1957b..b963f0401 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/encrypt/MybatisEncryptInterceptor.java @@ -37,7 +37,6 @@ import java.util.*; public class MybatisEncryptInterceptor implements Interceptor { private final EncryptorManager encryptorManager; - private final EncryptorProperties defaultProperties; @Override public Object intercept(Invocation invocation) throws Throwable { @@ -101,14 +100,7 @@ public class MybatisEncryptInterceptor implements Interceptor { * @return 加密后结果 */ private String encryptField(String value, Field field) { - EncryptField encryptField = field.getAnnotation(EncryptField.class); - EncryptContext encryptContext = new EncryptContext(); - encryptContext.setAlgorithm(encryptField.algorithm() == AlgorithmType.DEFAULT ? defaultProperties.getAlgorithm() : encryptField.algorithm()); - encryptContext.setEncode(encryptField.encode() == EncodeType.DEFAULT ? defaultProperties.getEncode() : encryptField.encode()); - encryptContext.setPassword(StringUtils.isBlank(encryptField.password()) ? defaultProperties.getPassword() : encryptField.password()); - encryptContext.setPrivateKey(StringUtils.isBlank(encryptField.privateKey()) ? defaultProperties.getPrivateKey() : encryptField.privateKey()); - encryptContext.setPublicKey(StringUtils.isBlank(encryptField.publicKey()) ? defaultProperties.getPublicKey() : encryptField.publicKey()); - return this.encryptorManager.encrypt(value, encryptContext); + return this.encryptorManager.encrypt(value, EncryptContextBuild.build(field)); }