mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-09 08:57:16 +08:00
build: continew-starter 2.13.2-SNAPSHOT => 2.13.2
1.使用 EncryptHelper 重构用户导入相关加密查询场景 2.BCryptEncryptor 适配最新加密体系 3.使用 Jackson JSONUtils 优化 ServletUtils.writeJSON(Hutool JSONUtil 序列化无法识别 Jackson 注解) 4.DefaultDataPermissionUserDataProvider 包调整、UserData、RoleData 字段类型调整 5.其他隐形升级(租户拦截器优先级、依赖升级等)
This commit is contained in:
@@ -17,7 +17,8 @@
|
||||
package top.continew.admin.common.config.mybatis;
|
||||
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import top.continew.starter.security.crypto.encryptor.IEncryptor;
|
||||
import top.continew.starter.security.crypto.encryptor.AbstractEncryptor;
|
||||
import top.continew.starter.security.crypto.encryptor.CryptoContext;
|
||||
import top.continew.starter.security.password.constant.PasswordEncoderConstants;
|
||||
|
||||
/**
|
||||
@@ -26,16 +27,17 @@ import top.continew.starter.security.password.constant.PasswordEncoderConstants;
|
||||
* @author Charles7c
|
||||
* @since 2024/2/8 22:29
|
||||
*/
|
||||
public class BCryptEncryptor implements IEncryptor {
|
||||
public class BCryptEncryptor extends AbstractEncryptor {
|
||||
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
public BCryptEncryptor(PasswordEncoder passwordEncoder) {
|
||||
public BCryptEncryptor(CryptoContext context, PasswordEncoder passwordEncoder) {
|
||||
super(context);
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encrypt(String plaintext, String password, String publicKey) {
|
||||
public String encrypt(String plaintext) {
|
||||
// 如果已经是 BCrypt 加密格式,直接返回
|
||||
if (PasswordEncoderConstants.BCRYPT_PATTERN.matcher(plaintext).matches()) {
|
||||
return plaintext;
|
||||
@@ -44,7 +46,7 @@ public class BCryptEncryptor implements IEncryptor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String decrypt(String ciphertext, String password, String privateKey) {
|
||||
public String decrypt(String ciphertext) {
|
||||
return ciphertext;
|
||||
}
|
||||
}
|
||||
|
@@ -16,14 +16,13 @@
|
||||
|
||||
package top.continew.admin.common.config.mybatis;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import top.continew.admin.common.context.UserContext;
|
||||
import top.continew.admin.common.context.UserContextHolder;
|
||||
import top.continew.starter.core.util.CollUtils;
|
||||
import top.continew.starter.extension.datapermission.enums.DataScope;
|
||||
import top.continew.starter.extension.datapermission.filter.DataPermissionUserDataProvider;
|
||||
import top.continew.starter.extension.datapermission.model.RoleData;
|
||||
import top.continew.starter.extension.datapermission.model.UserData;
|
||||
import top.continew.starter.extension.datapermission.provider.DataPermissionUserDataProvider;
|
||||
|
||||
/**
|
||||
* 数据权限用户数据提供者
|
||||
@@ -42,10 +41,11 @@ public class DefaultDataPermissionUserDataProvider implements DataPermissionUser
|
||||
public UserData getUserData() {
|
||||
UserContext userContext = UserContextHolder.getContext();
|
||||
UserData userData = new UserData();
|
||||
userData.setUserId(Convert.toStr(userContext.getId()));
|
||||
userData.setDeptId(Convert.toStr(userContext.getDeptId()));
|
||||
userData.setRoles(CollUtils.mapToSet(userContext.getRoles(), r -> new RoleData(Convert.toStr(r
|
||||
.getId()), DataScope.valueOf(r.getDataScope().name()))));
|
||||
userData.setUserId(userContext.getId());
|
||||
userData.setDeptId(userContext.getDeptId());
|
||||
userData.setRoles(CollUtils.mapToSet(userContext.getRoles(), r -> new RoleData(r.getId(), DataScope.valueOf(r
|
||||
.getDataScope()
|
||||
.name()))));
|
||||
return userData;
|
||||
}
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@ import com.baomidou.mybatisplus.extension.parser.cache.JdkSerialCaffeineJsqlPars
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import top.continew.starter.extension.datapermission.filter.DataPermissionUserDataProvider;
|
||||
import top.continew.starter.extension.datapermission.provider.DataPermissionUserDataProvider;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -62,6 +62,6 @@ public class MybatisPlusConfiguration {
|
||||
*/
|
||||
@Bean
|
||||
public BCryptEncryptor bCryptEncryptor(PasswordEncoder passwordEncoder) {
|
||||
return new BCryptEncryptor(passwordEncoder);
|
||||
return new BCryptEncryptor(null, passwordEncoder);
|
||||
}
|
||||
}
|
||||
|
@@ -19,16 +19,8 @@ package top.continew.admin.common.util;
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import cn.hutool.crypto.asymmetric.KeyType;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import top.continew.admin.common.config.RsaProperties;
|
||||
import top.continew.starter.core.exception.BusinessException;
|
||||
import top.continew.starter.core.util.CollUtils;
|
||||
import top.continew.starter.core.util.validation.ValidationUtils;
|
||||
import top.continew.starter.security.crypto.autoconfigure.CryptoProperties;
|
||||
import top.continew.starter.security.crypto.encryptor.AesEncryptor;
|
||||
import top.continew.starter.security.crypto.encryptor.IEncryptor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 加密/解密工具类
|
||||
@@ -86,22 +78,4 @@ public class SecureUtils {
|
||||
public static String decryptByRsaPrivateKey(String data, String privateKey) {
|
||||
return new String(SecureUtil.rsa(privateKey, null).decrypt(Base64.decode(data), KeyType.PrivateKey));
|
||||
}
|
||||
|
||||
/**
|
||||
* 对普通加密字段列表进行AES加密,优化starter加密模块后优化这个方法
|
||||
*
|
||||
* @param values 待加密内容
|
||||
* @return 加密后内容
|
||||
*/
|
||||
public static List<String> encryptFieldByAes(List<String> values) {
|
||||
IEncryptor encryptor = new AesEncryptor();
|
||||
CryptoProperties properties = SpringUtil.getBean(CryptoProperties.class);
|
||||
return CollUtils.mapToList(values, value -> {
|
||||
try {
|
||||
return encryptor.encrypt(value, properties.getPassword(), properties.getPublicKey());
|
||||
} catch (Exception e) {
|
||||
throw new BusinessException("字段加密异常");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user