diff --git a/continew-admin-common/pom.xml b/continew-admin-common/pom.xml index c6d6c3ce..64730951 100644 --- a/continew-admin-common/pom.xml +++ b/continew-admin-common/pom.xml @@ -96,6 +96,12 @@ continew-starter-file-excel + + + top.charles7c.continew + continew-starter-security-crypto + + top.charles7c.continew diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/BCryptEncryptor.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/BCryptEncryptor.java new file mode 100644 index 00000000..26ff301e --- /dev/null +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/BCryptEncryptor.java @@ -0,0 +1,29 @@ +package top.charles7c.continew.admin.common.config.mybatis; + +import org.springframework.security.crypto.password.PasswordEncoder; +import top.charles7c.continew.starter.security.crypto.encryptor.IEncryptor; + +/** + * BCrypt 加/解密处理器(不可逆) + * + * @author Charles7c + * @since 2024/2/8 22:29 + */ +public class BCryptEncryptor implements IEncryptor { + + private final PasswordEncoder passwordEncoder; + + public BCryptEncryptor(PasswordEncoder passwordEncoder) { + this.passwordEncoder = passwordEncoder; + } + + @Override + public String encrypt(String plaintext, String password, String publicKey) throws Exception { + return passwordEncoder.encode(plaintext); + } + + @Override + public String decrypt(String ciphertext, String password, String privateKey) throws Exception { + return ciphertext; + } +} diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java index 54905749..681ceed6 100644 --- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/mybatis/MybatisPlusConfiguration.java @@ -21,6 +21,7 @@ import org.springframework.context.annotation.Configuration; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.springframework.security.crypto.password.PasswordEncoder; import top.charles7c.continew.starter.data.mybatis.plus.datapermission.DataPermissionFilter; /** @@ -47,4 +48,12 @@ public class MybatisPlusConfiguration { public DataPermissionFilter dataPermissionFilter() { return new DataPermissionFilterImpl(); } + + /** + * BCrypt 加/解密处理器 + */ + @Bean + public BCryptEncryptor bCryptEncryptor(PasswordEncoder passwordEncoder) { + return new BCryptEncryptor(passwordEncoder); + } } diff --git a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java index ddf39acd..1e003fb9 100644 --- a/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java +++ b/continew-admin-common/src/main/java/top/charles7c/continew/admin/common/config/properties/RsaProperties.java @@ -31,7 +31,7 @@ public class RsaProperties { public static final String PRIVATE_KEY; static { - PRIVATE_KEY = SpringUtil.getProperty("rsa.privateKey"); + PRIVATE_KEY = SpringUtil.getProperty("continew-starter.security.crypto.private-key"); } private RsaProperties() { diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java index 32361639..b135f53e 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/UserDO.java @@ -16,16 +16,17 @@ package top.charles7c.continew.admin.system.model.entity; -import java.io.Serial; -import java.time.LocalDateTime; - -import lombok.Data; - import com.baomidou.mybatisplus.annotation.TableName; - +import lombok.Data; +import top.charles7c.continew.admin.common.config.mybatis.BCryptEncryptor; import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum; import top.charles7c.continew.admin.common.enums.GenderEnum; import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO; +import top.charles7c.continew.starter.security.crypto.annotation.FieldEncrypt; +import top.charles7c.continew.starter.security.crypto.enums.Algorithm; + +import java.io.Serial; +import java.time.LocalDateTime; /** * 用户实体 @@ -53,6 +54,7 @@ public class UserDO extends BaseDO { /** * 密码 */ + @FieldEncrypt(encryptor = BCryptEncryptor.class) private String password; /** @@ -63,11 +65,13 @@ public class UserDO extends BaseDO { /** * 邮箱 */ + @FieldEncrypt(Algorithm.AES) private String email; /** * 手机号码 */ + @FieldEncrypt(Algorithm.AES) private String phone; /** diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java index a486e65c..ef3fd45e 100644 --- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/UserServiceImpl.java @@ -93,7 +93,6 @@ public class UserServiceImpl extends BaseServiceImpl