mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-21 10:35:57 +08:00
修改如下:
1.默认加密算法修改为Base64,并且默认关闭该功能 2.加密配置类中的注解移到类上 3.错误日志记录采用日志框架来处理异常内容
This commit is contained in:
parent
c437089b29
commit
3fd825cf0c
@ -186,16 +186,16 @@ mybatis-plus:
|
|||||||
# 数据加密
|
# 数据加密
|
||||||
mybatis-encryptor:
|
mybatis-encryptor:
|
||||||
# 是否开启加密
|
# 是否开启加密
|
||||||
enabled: true
|
enabled: false
|
||||||
# 默认加密算法
|
# 默认加密算法
|
||||||
algorithm: aes
|
algorithm: base64
|
||||||
# 安全秘钥。对称算法的秘钥。如:AES,SM4
|
# 安全秘钥。对称算法的秘钥。如:AES,SM4
|
||||||
password: QBcc3SHK2G4ijyfl5XQ7@2g!N2j2jRDR
|
# password: QBcc3SHK2G4ijyfl5XQ7@2g!N2j2jRDR
|
||||||
# # 公私钥。非对称算法的公私钥,如:SM2,RSA
|
# # 公私钥。非对称算法的公私钥,如:SM2,RSA
|
||||||
# publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDt41GIcWvY6/tpjOLoWY78Oy00uWcNbMRG/8DRoS79/h2D+pV8uxV+0ezaN+fBFCZnK8TdJcPeU4EnNRUh/8HEY33KFvZ700n+Gj5BHUUDKzx3UVFNuF49UI/yoJ8rz6VQQHO79KK89VwmSMO77Tfee1ofe0STY6IwMt/MwaoKwIDAQAB
|
# publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDt41GIcWvY6/tpjOLoWY78Oy00uWcNbMRG/8DRoS79/h2D+pV8uxV+0ezaN+fBFCZnK8TdJcPeU4EnNRUh/8HEY33KFvZ700n+Gj5BHUUDKzx3UVFNuF49UI/yoJ8rz6VQQHO79KK89VwmSMO77Tfee1ofe0STY6IwMt/MwaoKwIDAQAB
|
||||||
# privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIO3jUYhxa9jr+2mM4uhZjvw7LTS5Zw1sxEb/wNGhLv3+HYP6lXy7FX7R7No358EUJmcrxN0lw95TgSc1FSH/wcRjfcoW9nvTSf4aPkEdRQMrPHdRUU24Xj1Qj/KgnyvPpVBAc7v0orz1XCZIw7vtN957Wh97RJNjojAy38zBqgrAgMBAAECgYAkXx4qvI6rFNryw88+Am6JpMioUghHb2ioE9QCYomqohnA+DocS71JLN8qwo3lijp7gJGzzKEeC8Aoc+oKAZfBQQwPP0K/ql+NcLdlqNAr+XyzkZrLJD/BfluQ6mXI23tjonWnPPZ1Et9HC3zXRQPiuh7Ff6UoqatTMI3OIbSyuQJBAPbaJpVYmIsWJdpvaAC6hcGgR/vbG9yX8VphPn8/2wsm2MmQrRkUoKkudE/veX3KQjGikDwo9+bT6aBl+nn2DUUCQQCImSGZFNcGqhMLyRGVogP6fh0YZSEQAhFbZ69nQmplqbie+dREhODH5Vs5F0C2aL5iSR/UaIDkNEA1auX7x56vAkAFWjON927PTTqi4tmBconl6eDFsDmJbe34xLUDM1I/iqcWr8FhEtZs9Knm9c1PkewfgWPZOhYt9hhRtwRYUqJ1AkAPvQ0I9US9KNVe80DKa8tnjiZODEDd9k8HqA+mpxlZM0/pSUGyz1iSz5NOJaa4HaNp8aDwOUY4hOis/u8Wrm5TAkEA00YeUsaXlMyMF/5pjols44tXb54AjAC2mH66pz9JsKg7pKpWVOpEV5rMY58CGZHWau69vGLZnCd1coeMw77YAQ==
|
# privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIO3jUYhxa9jr+2mM4uhZjvw7LTS5Zw1sxEb/wNGhLv3+HYP6lXy7FX7R7No358EUJmcrxN0lw95TgSc1FSH/wcRjfcoW9nvTSf4aPkEdRQMrPHdRUU24Xj1Qj/KgnyvPpVBAc7v0orz1XCZIw7vtN957Wh97RJNjojAy38zBqgrAgMBAAECgYAkXx4qvI6rFNryw88+Am6JpMioUghHb2ioE9QCYomqohnA+DocS71JLN8qwo3lijp7gJGzzKEeC8Aoc+oKAZfBQQwPP0K/ql+NcLdlqNAr+XyzkZrLJD/BfluQ6mXI23tjonWnPPZ1Et9HC3zXRQPiuh7Ff6UoqatTMI3OIbSyuQJBAPbaJpVYmIsWJdpvaAC6hcGgR/vbG9yX8VphPn8/2wsm2MmQrRkUoKkudE/veX3KQjGikDwo9+bT6aBl+nn2DUUCQQCImSGZFNcGqhMLyRGVogP6fh0YZSEQAhFbZ69nQmplqbie+dREhODH5Vs5F0C2aL5iSR/UaIDkNEA1auX7x56vAkAFWjON927PTTqi4tmBconl6eDFsDmJbe34xLUDM1I/iqcWr8FhEtZs9Knm9c1PkewfgWPZOhYt9hhRtwRYUqJ1AkAPvQ0I9US9KNVe80DKa8tnjiZODEDd9k8HqA+mpxlZM0/pSUGyz1iSz5NOJaa4HaNp8aDwOUY4hOis/u8Wrm5TAkEA00YeUsaXlMyMF/5pjols44tXb54AjAC2mH66pz9JsKg7pKpWVOpEV5rMY58CGZHWau69vGLZnCd1coeMw77YAQ==
|
||||||
# # 编码方式,base64/hex。默认base64
|
# # 编码方式,base64/hex。默认base64
|
||||||
encode: base64
|
# encode: base64
|
||||||
|
|
||||||
# Swagger配置
|
# Swagger配置
|
||||||
swagger:
|
swagger:
|
||||||
|
|||||||
@ -19,7 +19,7 @@ public @interface EncryptField {
|
|||||||
/**
|
/**
|
||||||
* 加密算法
|
* 加密算法
|
||||||
*/
|
*/
|
||||||
AlgorithmType algorithm() default AlgorithmType.AES;
|
AlgorithmType algorithm() default AlgorithmType.BASE64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 秘钥。AES、SM4需要
|
* 秘钥。AES、SM4需要
|
||||||
|
|||||||
@ -2,6 +2,8 @@ package com.ruoyi.framework.config;
|
|||||||
|
|
||||||
import com.ruoyi.framework.config.properties.EncryptorProperties;
|
import com.ruoyi.framework.config.properties.EncryptorProperties;
|
||||||
import com.ruoyi.framework.encrypt.EncryptorManager;
|
import com.ruoyi.framework.encrypt.EncryptorManager;
|
||||||
|
import com.ruoyi.framework.encrypt.MybatisDecryptInterceptor;
|
||||||
|
import com.ruoyi.framework.encrypt.MybatisEncryptInterceptor;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@ -13,13 +15,23 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
* @date 2023-01-11 10:03
|
* @date 2023-01-11 10:03
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
|
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
|
||||||
public class EncryptorConfig {
|
public class EncryptorConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
|
|
||||||
public EncryptorManager mybatisCryptHandler(EncryptorProperties properties) {
|
public EncryptorManager mybatisCryptHandler(EncryptorProperties properties) {
|
||||||
EncryptorManager encryptorManager = new EncryptorManager();
|
EncryptorManager encryptorManager = new EncryptorManager();
|
||||||
encryptorManager.registAndGetEncryptor(properties);
|
encryptorManager.registAndGetEncryptor(properties);
|
||||||
return encryptorManager;
|
return encryptorManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MybatisEncryptInterceptor mybatisEncryptInterceptor(EncryptorProperties properties) {
|
||||||
|
return new MybatisEncryptInterceptor();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public MybatisDecryptInterceptor mybatisDecryptInterceptor(EncryptorProperties properties) {
|
||||||
|
return new MybatisDecryptInterceptor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ public class EncryptorManager {
|
|||||||
encryptorMap.put(encryptorKey, new Sm4Encryptor(properties.getPassword()));
|
encryptorMap.put(encryptorKey, new Sm4Encryptor(properties.getPassword()));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
AesEncryptor defaultEncryptor = new AesEncryptor(properties.getPassword());
|
Base64Encryptor defaultEncryptor = new Base64Encryptor();
|
||||||
encryptorMap.put(encryptorKey, defaultEncryptor);
|
encryptorMap.put(encryptorKey, defaultEncryptor);
|
||||||
}
|
}
|
||||||
return encryptorMap.get(encryptorKey);
|
return encryptorMap.get(encryptorKey);
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.ruoyi.framework.encrypt;
|
package com.ruoyi.framework.encrypt;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
||||||
import com.ruoyi.common.annotation.EncryptField;
|
import com.ruoyi.common.annotation.EncryptField;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
@ -9,12 +8,13 @@ import com.ruoyi.framework.config.properties.EncryptorProperties;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.ibatis.executor.resultset.ResultSetHandler;
|
import org.apache.ibatis.executor.resultset.ResultSetHandler;
|
||||||
import org.apache.ibatis.plugin.*;
|
import org.apache.ibatis.plugin.*;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.util.*;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出参解密拦截器
|
* 出参解密拦截器
|
||||||
@ -28,8 +28,6 @@ import java.util.*;
|
|||||||
method = "handleResultSets",
|
method = "handleResultSets",
|
||||||
args = {Statement.class})
|
args = {Statement.class})
|
||||||
})
|
})
|
||||||
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
|
|
||||||
@Component
|
|
||||||
public class MybatisDecryptInterceptor implements Interceptor {
|
public class MybatisDecryptInterceptor implements Interceptor {
|
||||||
|
|
||||||
private final EncryptorManager encryptorManager = SpringUtils.getBean(EncryptorManager.class);
|
private final EncryptorManager encryptorManager = SpringUtils.getBean(EncryptorManager.class);
|
||||||
@ -71,7 +69,7 @@ public class MybatisDecryptInterceptor implements Interceptor {
|
|||||||
field.set(sourceObject, this.decryptField(String.valueOf(field.get(sourceObject)), field));
|
field.set(sourceObject, this.decryptField(String.valueOf(field.get(sourceObject)), field));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理加密字段时出错:{}", ExceptionUtil.getSimpleMessage(e));
|
log.error("处理解密字段时出错", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.ruoyi.framework.encrypt;
|
package com.ruoyi.framework.encrypt;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.ruoyi.common.annotation.EncryptField;
|
import com.ruoyi.common.annotation.EncryptField;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
@ -13,8 +12,6 @@ import org.apache.ibatis.plugin.Interceptor;
|
|||||||
import org.apache.ibatis.plugin.Intercepts;
|
import org.apache.ibatis.plugin.Intercepts;
|
||||||
import org.apache.ibatis.plugin.Invocation;
|
import org.apache.ibatis.plugin.Invocation;
|
||||||
import org.apache.ibatis.plugin.Signature;
|
import org.apache.ibatis.plugin.Signature;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
@ -35,8 +32,6 @@ import java.util.Set;
|
|||||||
method = "setParameters",
|
method = "setParameters",
|
||||||
args = {PreparedStatement.class})
|
args = {PreparedStatement.class})
|
||||||
})
|
})
|
||||||
@ConditionalOnProperty(value = "mybatis-encryptor.enabled", havingValue = "true")
|
|
||||||
@Component
|
|
||||||
public class MybatisEncryptInterceptor implements Interceptor {
|
public class MybatisEncryptInterceptor implements Interceptor {
|
||||||
|
|
||||||
private final EncryptorManager encryptorManager = SpringUtils.getBean(EncryptorManager.class);
|
private final EncryptorManager encryptorManager = SpringUtils.getBean(EncryptorManager.class);
|
||||||
@ -85,7 +80,7 @@ public class MybatisEncryptInterceptor implements Interceptor {
|
|||||||
field.set(sourceObject, this.encryptField(String.valueOf(field.get(sourceObject)), field));
|
field.set(sourceObject, this.encryptField(String.valueOf(field.get(sourceObject)), field));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("处理加密字段时出错:{}", ExceptionUtil.getSimpleMessage(e));
|
log.error("处理加密字段时出错", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user