|
@@ -18,6 +18,7 @@ import com.huiju.estateagents.service.*;
|
18
|
18
|
import io.swagger.annotations.ApiImplicitParam;
|
19
|
19
|
import io.swagger.annotations.ApiImplicitParams;
|
20
|
20
|
import io.swagger.annotations.ApiOperation;
|
|
21
|
+import org.checkerframework.checker.units.qual.A;
|
21
|
22
|
import org.slf4j.Logger;
|
22
|
23
|
import org.slf4j.LoggerFactory;
|
23
|
24
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
|
26
|
27
|
import javax.servlet.http.HttpServletRequest;
|
27
|
28
|
|
28
|
29
|
import java.text.SimpleDateFormat;
|
|
30
|
+import java.time.Duration;
|
29
|
31
|
import java.time.LocalDateTime;
|
30
|
32
|
import java.util.*;
|
31
|
33
|
|
|
@@ -85,6 +87,9 @@ public class TaUserController extends BaseController {
|
85
|
87
|
@Autowired
|
86
|
88
|
public CaptchaUtils captchaUtils;
|
87
|
89
|
|
|
90
|
+ @Autowired
|
|
91
|
+ LoginLocker loginLocker;
|
|
92
|
+
|
88
|
93
|
/**
|
89
|
94
|
* 分页查询列表
|
90
|
95
|
* @param pageNum
|
|
@@ -342,6 +347,18 @@ public class TaUserController extends BaseController {
|
342
|
347
|
String captcha = params.getString("captcha");
|
343
|
348
|
String captchaKey = params.getString("captchaKey");
|
344
|
349
|
|
|
350
|
+ // 试错 3 次被锁定
|
|
351
|
+ int maxTryTimes = 3;
|
|
352
|
+ if (null != userName) {
|
|
353
|
+ LoginLocker.LogInfo logInfo = loginLocker.get("admin-" + userName);
|
|
354
|
+ if (null != logInfo) {
|
|
355
|
+ if (logInfo.getTimes() >= maxTryTimes) {
|
|
356
|
+ String errMsg = String.format("该账号被锁定, 请 %d 分钟后重试", Duration.between(LocalDateTime.now(), logInfo.getExpire()).toMinutes() + 1);
|
|
357
|
+ return ResponseBean.error(errMsg, ResponseBean.ERROR_UNAVAILABLE);
|
|
358
|
+ }
|
|
359
|
+ }
|
|
360
|
+ }
|
|
361
|
+
|
345
|
362
|
if (!captchaUtils.valid(captchaKey, captcha)) {
|
346
|
363
|
return ResponseBean.error("验证码不正确或者已过期", ResponseBean.ERROR_ILLEGAL_PARAMS);
|
347
|
364
|
}
|
|
@@ -352,9 +369,14 @@ public class TaUserController extends BaseController {
|
352
|
369
|
sysUserQueryWrapper.eq("login_password", MD5Utils.md5(userPassword));
|
353
|
370
|
TaUser taUser = iTaUserService.getOne(sysUserQueryWrapper);
|
354
|
371
|
if (taUser == null) {
|
355
|
|
- return ResponseBean.error("用户名或密码错误", ResponseBean.ERROR_ILLEGAL_PARAMS);
|
|
372
|
+ LoginLocker.LogInfo logInfo = loginLocker.add("admin-" + userName);
|
|
373
|
+ String errMsg = String.format("用户名或密码错误, 您还有 %d 次机会", maxTryTimes - logInfo.getTimes());
|
|
374
|
+ return ResponseBean.error(errMsg, ResponseBean.ERROR_ILLEGAL_PARAMS);
|
356
|
375
|
}
|
357
|
376
|
|
|
377
|
+ // 解除锁定
|
|
378
|
+ loginLocker.remove("admin-"+userName);
|
|
379
|
+
|
358
|
380
|
QueryWrapper<TaUser> taUserQueryWrapper = new QueryWrapper<>();
|
359
|
381
|
taUserQueryWrapper.eq("org_id", taUser.getOrgId());
|
360
|
382
|
taUserQueryWrapper.eq("is_admin", 1);
|