67 lines
1.8 KiB
Java
67 lines
1.8 KiB
Java
package com.zhgd.xmgl.util;
|
||
|
||
import cn.hutool.core.date.DateUtil;
|
||
import cn.hutool.core.util.StrUtil;
|
||
import lombok.experimental.UtilityClass;
|
||
|
||
import java.util.Date;
|
||
|
||
@UtilityClass
|
||
public class PwUtil {
|
||
/**
|
||
* 长度至少为8,至少含有一个字母和一个数字和一个特殊字符
|
||
*/
|
||
String pattern = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$";
|
||
|
||
/**
|
||
* 校验密码规则
|
||
*
|
||
* @param pw
|
||
* @return
|
||
*/
|
||
public void checkPwPattern(String pw) {
|
||
if (!PwUtil.doCheckPw(pw)) {
|
||
//前端校验
|
||
//throw new OpenAlertException(MessageUtil.get("passwordPatternErr"));
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 校验密码是否过期,true过期
|
||
*
|
||
* @param date
|
||
*/
|
||
public boolean checkPwExpire(Date date) {
|
||
//口令最长有效期为90天,并为所有登录登录用
|
||
if (DateUtil.compare(date, new Date()) < 0 && DateUtil.betweenDay(date, new Date(), true) > 90) {
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
|
||
|
||
/**
|
||
* 检验密码规则(长度至少为8,至少含有一个字母和一个数字和一个特殊字符)
|
||
*
|
||
* @param pw
|
||
* @return
|
||
*/
|
||
private boolean doCheckPw(String pw) {
|
||
if (StrUtil.isBlank(pw)) {
|
||
return false;
|
||
}
|
||
return pw.matches(pattern);
|
||
}
|
||
|
||
public void main(String[] args) {
|
||
System.out.println(doCheckPw("12345678"));
|
||
System.out.println(doCheckPw("123!a"));
|
||
System.out.println(doCheckPw("123a"));
|
||
System.out.println(doCheckPw("123!"));
|
||
System.out.println(doCheckPw("aaaaaaaaaaaaaaaaa"));
|
||
System.out.println(doCheckPw("aaaaaaaa!aaaaaaa"));
|
||
System.out.println(doCheckPw("123567899!j"));
|
||
System.out.println(doCheckPw("123567899!H"));
|
||
}
|
||
}
|