From 7ac5113fefc5e7cc4832dddaa485432c689daa5b Mon Sep 17 00:00:00 2001 From: 3030332422 <3030332422@qq.com> Date: Thu, 25 Sep 2025 09:15:41 +0800 Subject: [PATCH] =?UTF-8?q?update:=E9=9D=9E=E5=AF=B9=E7=A7=B0=E5=8A=A0?= =?UTF-8?q?=E5=AF=86=E6=B3=A8=E5=86=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/controller/LoginController.java | 38 +++++ main/manager-web/src/views/register.vue | 130 +++++++++++++++++- 2 files changed, 162 insertions(+), 6 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/security/controller/LoginController.java b/main/manager-api/src/main/java/xiaozhi/modules/security/controller/LoginController.java index 1a9fdd6c..10d74045 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/security/controller/LoginController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/security/controller/LoginController.java @@ -165,6 +165,44 @@ public class LoginController { if (!sysUserService.getAllowUserRegister()) { throw new RenException(ErrorCode.USER_REGISTER_DISABLED); } + + String username = login.getUsername(); + String password = login.getPassword(); + + // 如果用户名是SM2加密格式,则进行解密 + if (isSM2Encrypted(username)) { + try { + // 获取SM2私钥 + String privateKeyStr = sysParamsService.getValue(Constant.SM2_PRIVATE_KEY, true); + if (StringUtils.isBlank(privateKeyStr)) { + throw new RenException(ErrorCode.SM2_KEY_NOT_CONFIGURED); + } + + // 使用SM2私钥解密用户名(十六进制格式) + String decryptedUsername = SM2Utils.decrypt(privateKeyStr, username); + login.setUsername(decryptedUsername); + } catch (Exception e) { + throw new RenException(ErrorCode.SM2_DECRYPT_ERROR); + } + } + + // 如果密码是SM2加密格式,则进行解密 + if (isSM2Encrypted(password)) { + try { + // 获取SM2私钥 + String privateKeyStr = sysParamsService.getValue(Constant.SM2_PRIVATE_KEY, true); + if (StringUtils.isBlank(privateKeyStr)) { + throw new RenException(ErrorCode.SM2_KEY_NOT_CONFIGURED); + } + + // 使用SM2私钥解密密码 + String decryptedPassword = SM2Utils.decrypt(privateKeyStr, password); + login.setPassword(decryptedPassword); + } catch (Exception e) { + throw new RenException(ErrorCode.SM2_DECRYPT_ERROR); + } + } + // 是否开启手机注册 Boolean isMobileRegister = sysParamsService .getValueObject(Constant.SysMSMParam.SERVER_ENABLE_MOBILE_REGISTER.getValue(), Boolean.class); diff --git a/main/manager-web/src/views/register.vue b/main/manager-web/src/views/register.vue index c839abc8..d8c4b83e 100644 --- a/main/manager-web/src/views/register.vue +++ b/main/manager-web/src/views/register.vue @@ -121,8 +121,9 @@