diff --git a/par-core/src/main/java/com/par/core/dto/RegisterRequest.java b/par-core/src/main/java/com/par/core/dto/RegisterRequest.java index 9d8baa1..855a2d1 100644 --- a/par-core/src/main/java/com/par/core/dto/RegisterRequest.java +++ b/par-core/src/main/java/com/par/core/dto/RegisterRequest.java @@ -15,7 +15,6 @@ public class RegisterRequest { @Email(message = "邮箱格式不正确") private String email; - @NotBlank(message = "密码不能为空") @Size(min = 6, max = 128, message = "密码长度须在 6-128 位之间") private String password; diff --git a/par-core/src/main/java/com/par/core/service/impl/AccountServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/AccountServiceImpl.java index a7123a3..de606e6 100644 --- a/par-core/src/main/java/com/par/core/service/impl/AccountServiceImpl.java +++ b/par-core/src/main/java/com/par/core/service/impl/AccountServiceImpl.java @@ -49,7 +49,15 @@ public class AccountServiceImpl implements AccountService { Account account = new Account(); account.setEmail(request.getEmail().toLowerCase().trim()); - account.setPasswordHash(PasswordUtil.encode(request.getPassword())); + + // 密码为空则自动生成(机器注册场景) + String password = request.getPassword(); + if (password == null || password.isBlank()) { + byte[] pwdBytes = new byte[16]; + SECURE_RANDOM.nextBytes(pwdBytes); + password = Base64.getUrlEncoder().withoutPadding().encodeToString(pwdBytes); + } + account.setPasswordHash(PasswordUtil.encode(password)); account.setDisplayName(request.getDisplayName()); account.setTrustLevel(TrustLevel.MEMBER); account.setIsActive(true);