refactor: 优化密码策略部分参数键命名

This commit is contained in:
2024-06-11 22:42:58 +08:00
parent e6d720571d
commit 48d0f47614
4 changed files with 16 additions and 15 deletions

View File

@@ -97,7 +97,7 @@ public enum PasswordPolicyEnum {
/** /**
* 密码是否必须包含特殊字符 * 密码是否必须包含特殊字符
*/ */
PASSWORD_CONTAIN_SPECIAL_CHARACTERS("密码是否必须包含特殊字符取值只能为是(%d或否%d", SysConstants.NO, SysConstants.YES, "密码必须包含特殊字符") { PASSWORD_REQUIRE_SYMBOLS("密码是否必须包含特殊字符取值只能为是(%d或否%d", SysConstants.NO, SysConstants.YES, "密码必须包含特殊字符") {
@Override @Override
public void validateRange(int value, Map<String, String> policyMap) { public void validateRange(int value, Map<String, String> policyMap) {
ValidationUtils.throwIf(value != SysConstants.YES && value != SysConstants.NO, this.getDescription() ValidationUtils.throwIf(value != SysConstants.YES && value != SysConstants.NO, this.getDescription()
@@ -132,9 +132,9 @@ public enum PasswordPolicyEnum {
}, },
/** /**
* 密码重复使用规则 * 密码重复使用次数
*/ */
PASSWORD_REUSE_POLICY("密码重复使用规则取值范围为 %d-%d", 3, 32, "不允许使用最近 %d 次的历史密码") { PASSWORD_REPETITION_TIMES("密码重复使用规则取值范围为 %d-%d", 3, 32, "新密码不得与历史前 %d 次密码重复") {
@Override @Override
public void validate(String password, int value, UserDO user) { public void validate(String password, int value, UserDO user) {
UserPasswordHistoryService userPasswordHistoryService = SpringUtil UserPasswordHistoryService userPasswordHistoryService = SpringUtil

View File

@@ -203,13 +203,13 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
CheckUtils.throwIf(!passwordEncoder.matches(oldPassword, password), "当前密码错误"); CheckUtils.throwIf(!passwordEncoder.matches(oldPassword, password), "当前密码错误");
} }
// 校验密码合法性 // 校验密码合法性
int passwordReusePolicy = this.checkPassword(newPassword, user); int passwordRepetitionTimes = this.checkPassword(newPassword, user);
// 更新密码和密码重置时间 // 更新密码和密码重置时间
user.setPassword(newPassword); user.setPassword(newPassword);
user.setPwdResetTime(LocalDateTime.now()); user.setPwdResetTime(LocalDateTime.now());
baseMapper.updateById(user); baseMapper.updateById(user);
// 保存历史密码 // 保存历史密码
userPasswordHistoryService.add(id, password, passwordReusePolicy); userPasswordHistoryService.add(id, password, passwordRepetitionTimes);
} }
@Override @Override
@@ -332,21 +332,22 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
* *
* @param password 密码 * @param password 密码
* @param user 用户信息 * @param user 用户信息
* @return 密码允许重复使用次数
*/ */
private int checkPassword(String password, UserDO user) { private int checkPassword(String password, UserDO user) {
Map<String, String> passwordPolicy = optionService.getByCategory(CATEGORY); Map<String, String> passwordPolicy = optionService.getByCategory(CATEGORY);
// 密码最小长度 // 密码最小长度
PASSWORD_MIN_LENGTH.validate(password, MapUtil.getInt(passwordPolicy, PASSWORD_MIN_LENGTH.name()), user); PASSWORD_MIN_LENGTH.validate(password, MapUtil.getInt(passwordPolicy, PASSWORD_MIN_LENGTH.name()), user);
// 密码是否必须包含特殊字符 // 密码是否必须包含特殊字符
PASSWORD_CONTAIN_SPECIAL_CHARACTERS.validate(password, MapUtil PASSWORD_REQUIRE_SYMBOLS.validate(password, MapUtil.getInt(passwordPolicy, PASSWORD_REQUIRE_SYMBOLS
.getInt(passwordPolicy, PASSWORD_CONTAIN_SPECIAL_CHARACTERS.name()), user); .name()), user);
// 密码是否允许包含正反序账号名 // 密码是否允许包含正反序账号名
PASSWORD_ALLOW_CONTAIN_USERNAME.validate(password, MapUtil PASSWORD_ALLOW_CONTAIN_USERNAME.validate(password, MapUtil
.getInt(passwordPolicy, PASSWORD_ALLOW_CONTAIN_USERNAME.name()), user); .getInt(passwordPolicy, PASSWORD_ALLOW_CONTAIN_USERNAME.name()), user);
// 密码重复使用规则 // 密码重复使用次数
int passwordReusePolicy = MapUtil.getInt(passwordPolicy, PASSWORD_REUSE_POLICY.name()); int passwordRepetitionTimes = MapUtil.getInt(passwordPolicy, PASSWORD_REPETITION_TIMES.name());
PASSWORD_REUSE_POLICY.validate(password, passwordReusePolicy, user); PASSWORD_REPETITION_TIMES.validate(password, passwordRepetitionTimes, user);
return passwordReusePolicy; return passwordRepetitionTimes;
} }
/** /**

View File

@@ -119,10 +119,10 @@ VALUES
(8, 'PASSWORD', '登录密码错误锁定账号的时间min', 'PASSWORD_ERROR_LOCK_MINUTES', NULL, '5', '取值范围为 1-1440一天', NULL, NULL), (8, 'PASSWORD', '登录密码错误锁定账号的时间min', 'PASSWORD_ERROR_LOCK_MINUTES', NULL, '5', '取值范围为 1-1440一天', NULL, NULL),
(9, 'PASSWORD', '密码有效期(天)', 'PASSWORD_EXPIRATION_DAYS', NULL, '0', '取值范围为 0-9990 表示永久有效)。', NULL, NULL), (9, 'PASSWORD', '密码有效期(天)', 'PASSWORD_EXPIRATION_DAYS', NULL, '0', '取值范围为 0-9990 表示永久有效)。', NULL, NULL),
(10, 'PASSWORD', '密码到期提前提示(天)', 'PASSWORD_EXPIRATION_WARNING_DAYS', NULL, '0', '密码到期 N 天前进行提示0 表示不提示)。', NULL, NULL), (10, 'PASSWORD', '密码到期提前提示(天)', 'PASSWORD_EXPIRATION_WARNING_DAYS', NULL, '0', '密码到期 N 天前进行提示0 表示不提示)。', NULL, NULL),
(11, 'PASSWORD', '密码重复使用规则', 'PASSWORD_REUSE_POLICY', NULL, '3', '不允许使用最近 N 次密码,取值范围为 3-32。', NULL, NULL), (11, 'PASSWORD', '密码重复使用次数', 'PASSWORD_REPETITION_TIMES', NULL, '3', '不允许使用最近 N 次密码,取值范围为 3-32。', NULL, NULL),
(12, 'PASSWORD', '密码最小长度', 'PASSWORD_MIN_LENGTH', NULL, '8', '取值范围为 8-32。', NULL, NULL), (12, 'PASSWORD', '密码最小长度', 'PASSWORD_MIN_LENGTH', NULL, '8', '取值范围为 8-32。', NULL, NULL),
(13, 'PASSWORD', '密码是否允许包含正反序账号名', 'PASSWORD_ALLOW_CONTAIN_USERNAME', NULL, '1', NULL, NULL, NULL), (13, 'PASSWORD', '密码是否允许包含正反序账号名', 'PASSWORD_ALLOW_CONTAIN_USERNAME', NULL, '1', NULL, NULL, NULL),
(14, 'PASSWORD', '密码是否必须包含特殊字符', 'PASSWORD_CONTAIN_SPECIAL_CHARACTERS', NULL, '0', NULL, NULL, NULL), (14, 'PASSWORD', '密码是否必须包含特殊字符', 'PASSWORD_REQUIRE_SYMBOLS', NULL, '0', NULL, NULL, NULL),
(15, 'MAIL', '发送协议', 'MAIL_PROTOCOL', NULL, 'smtp', NULL, NULL, NULL), (15, 'MAIL', '发送协议', 'MAIL_PROTOCOL', NULL, 'smtp', NULL, NULL, NULL),
(16, 'MAIL', '服务器地址', 'MAIL_HOST', NULL, 'smtp.126.com', NULL, NULL, NULL), (16, 'MAIL', '服务器地址', 'MAIL_HOST', NULL, 'smtp.126.com', NULL, NULL, NULL),
(17, 'MAIL', '服务器端口', 'MAIL_PORT', NULL, '465', NULL, NULL, NULL), (17, 'MAIL', '服务器端口', 'MAIL_PORT', NULL, '465', NULL, NULL, NULL),

View File

@@ -119,10 +119,10 @@ VALUES
(8, 'PASSWORD', '登录密码错误锁定账号的时间min', 'PASSWORD_ERROR_LOCK_MINUTES', NULL, '5', '取值范围为 1-1440一天', NULL, NULL), (8, 'PASSWORD', '登录密码错误锁定账号的时间min', 'PASSWORD_ERROR_LOCK_MINUTES', NULL, '5', '取值范围为 1-1440一天', NULL, NULL),
(9, 'PASSWORD', '密码有效期(天)', 'PASSWORD_EXPIRATION_DAYS', NULL, '0', '取值范围为 0-9990 表示永久有效)。', NULL, NULL), (9, 'PASSWORD', '密码有效期(天)', 'PASSWORD_EXPIRATION_DAYS', NULL, '0', '取值范围为 0-9990 表示永久有效)。', NULL, NULL),
(10, 'PASSWORD', '密码到期提前提示(天)', 'PASSWORD_EXPIRATION_WARNING_DAYS', NULL, '0', '密码到期 N 天前进行提示0 表示不提示)。', NULL, NULL), (10, 'PASSWORD', '密码到期提前提示(天)', 'PASSWORD_EXPIRATION_WARNING_DAYS', NULL, '0', '密码到期 N 天前进行提示0 表示不提示)。', NULL, NULL),
(11, 'PASSWORD', '密码重复使用规则', 'PASSWORD_REUSE_POLICY', NULL, '3', '不允许使用最近 N 次密码,取值范围为 3-32。', NULL, NULL), (11, 'PASSWORD', '密码重复使用次数', 'PASSWORD_REPETITION_TIMES', NULL, '3', '不允许使用最近 N 次密码,取值范围为 3-32。', NULL, NULL),
(12, 'PASSWORD', '密码最小长度', 'PASSWORD_MIN_LENGTH', NULL, '8', '取值范围为 8-32。', NULL, NULL), (12, 'PASSWORD', '密码最小长度', 'PASSWORD_MIN_LENGTH', NULL, '8', '取值范围为 8-32。', NULL, NULL),
(13, 'PASSWORD', '密码是否允许包含正反序账号名', 'PASSWORD_ALLOW_CONTAIN_USERNAME', NULL, '1', NULL, NULL, NULL), (13, 'PASSWORD', '密码是否允许包含正反序账号名', 'PASSWORD_ALLOW_CONTAIN_USERNAME', NULL, '1', NULL, NULL, NULL),
(14, 'PASSWORD', '密码是否必须包含特殊字符', 'PASSWORD_CONTAIN_SPECIAL_CHARACTERS', NULL, '0', NULL, NULL, NULL), (14, 'PASSWORD', '密码是否必须包含特殊字符', 'PASSWORD_REQUIRE_SYMBOLS', NULL, '0', NULL, NULL, NULL),
(15, 'MAIL', '发送协议', 'MAIL_PROTOCOL', NULL, 'smtp', NULL, NULL, NULL), (15, 'MAIL', '发送协议', 'MAIL_PROTOCOL', NULL, 'smtp', NULL, NULL, NULL),
(16, 'MAIL', '服务器地址', 'MAIL_HOST', NULL, 'smtp.126.com', NULL, NULL, NULL), (16, 'MAIL', '服务器地址', 'MAIL_HOST', NULL, 'smtp.126.com', NULL, NULL, NULL),
(17, 'MAIL', '服务器端口', 'MAIL_PORT', NULL, '465', NULL, NULL, NULL), (17, 'MAIL', '服务器端口', 'MAIL_PORT', NULL, '465', NULL, NULL, NULL),