|
|
@@ -1,6 +1,5 @@
|
|
|
package thyyxxk.webserver.service;
|
|
|
|
|
|
-import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.crypto.SecureUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
@@ -66,13 +65,26 @@ public class LoginService {
|
|
|
userInfo.setNextInputTimes(null);
|
|
|
userInfo.setInputErrFrequency(times);
|
|
|
// 输入次数大于三次锁定
|
|
|
- if (times >= 3) {
|
|
|
- now = DateUtil.offsetMinute(now, 10);
|
|
|
+ if (times > 3) {
|
|
|
+ // 如果当前时间在限制时间之前就用限制时间
|
|
|
+ if (now.toInstant().isBefore(tempUserInfo.getNextInputTimes().toInstant())) {
|
|
|
+ now = tempUserInfo.getNextInputTimes();
|
|
|
+ } else {
|
|
|
+ // 如果不在就加 10 分钟
|
|
|
+ now = DateUtil.offsetMinute(now, 10);
|
|
|
+ }
|
|
|
userInfo.setNextInputTimes(now);
|
|
|
dao.addInputErrFrequency(tempUserInfo.getCodeRs(), times, now);
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.LOCK_OUT_THE_USER, StrUtil.format("用户已被锁定请:【{}】后重试。", DateUtil.formatDatetime(userInfo.getNextInputTimes())), userInfo);
|
|
|
}
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.INVALID_PASSWORD, userInfo);
|
|
|
+ dao.addInputErrFrequency(tempUserInfo.getCodeRs(), times, now);
|
|
|
+ if (userInfo.getNextInputTimes() != null) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOCK_OUT_THE_USER,
|
|
|
+ StrUtil.format("用户已被锁定请:【{}】后重试。",
|
|
|
+ DateUtil.formatDatetime(userInfo.getNextInputTimes())),
|
|
|
+ userInfo);
|
|
|
+ } else {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.INVALID_PASSWORD, userInfo);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (tempUserInfo.getInputErrFrequency() > 0) {
|
|
|
@@ -162,5 +174,4 @@ public class LoginService {
|
|
|
return code + flakeIdSub + tokenSub;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|