正常需求是密码要求8-16位,字符包含三种组合以上,前后端都可以校验,此处展示的是后台校验的相关代码
//传参中有个 BindingResult result
if (!isLowSafely(password)) {
result.rejectValue("password", "password.fail","至少包含大写字母/小写字母/数字/符号3种组合");
}
/**
* 判断密码安全级别
*
* @return boolean
*/
public boolean isLowSafely(String password) {
int weight = 0;
if (java.util.regex.Pattern.compile(".*\\d+.*").matcher(this.password).matches())
weight ++;
if (java.util.regex.Pattern.compile(".*[a-z]+.*").matcher(this.password).matches())
weight ++;
if (java.util.regex.Pattern.compile(".*[A-Z]+.*").matcher(this.password).matches())
weight ++;
if (java.util.regex.Pattern.compile(".*[!@#$%^&.]+.*").matcher(this.password).matches())
weight ++;
return weight >= 3;
}