mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-10 19:36:50 +08:00
增加登录限制
This commit is contained in:
@@ -100,12 +100,7 @@ public class SysLoginApi extends ApiBaseController {
|
|||||||
return error("验证码错误");
|
return error("验证码错误");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 从redis缓存中获取5分钟内登陆错误的次数
|
|
||||||
String loginErrorNum = redisTemplate.opsForValue().get(CacheName.NAME_USER_LOGIN_ERROR_NUM);
|
|
||||||
Integer loginErrorCount = 0;
|
|
||||||
if(loginErrorNum != null || !loginErrorNum.equals("")){
|
|
||||||
loginErrorCount = Integer.parseInt(loginErrorNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查系统用户是否存在
|
// 检查系统用户是否存在
|
||||||
Account account = accountService.check(loginName,null);
|
Account account = accountService.check(loginName,null);
|
||||||
@@ -114,14 +109,20 @@ public class SysLoginApi extends ApiBaseController {
|
|||||||
passStr = MD5Util.MD5Encode(password + account.getPassKey());
|
passStr = MD5Util.MD5Encode(password + account.getPassKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 从redis缓存中获取5分钟内登陆错误的次数
|
||||||
|
String loginErrorNum = redisTemplate.opsForValue().get(CacheName.NAME_USER_LOGIN_ERROR_NUM+account);
|
||||||
|
Integer loginErrorCount = 0;
|
||||||
|
if(loginErrorNum != null || !loginErrorNum.equals("")){
|
||||||
|
loginErrorCount = Integer.parseInt(loginErrorNum);
|
||||||
|
}
|
||||||
|
|
||||||
if (account == null || StringUtil.isBlank(passStr) || !passStr.equals(account.getPassValue())) {
|
if (account == null || StringUtil.isBlank(passStr) || !passStr.equals(account.getPassValue())) {
|
||||||
if(loginErrorCount >=5){
|
if(loginErrorCount >=5){
|
||||||
redisTemplate.opsForValue().set(CacheName.NAME_USER_LOGIN_ERROR_NUM, "5", 5, TimeUnit.MINUTES);
|
redisTemplate.opsForValue().set(CacheName.NAME_USER_LOGIN_ERROR_NUM+account, "5", 5, TimeUnit.MINUTES);
|
||||||
return error("由于您登录失败次数过多,账号已被锁定!");
|
return error("由于您登录失败次数过多,账号已被锁定!");
|
||||||
}else{
|
}else{
|
||||||
loginErrorCount = loginErrorCount + 1;
|
loginErrorCount = loginErrorCount + 1;
|
||||||
redisTemplate.opsForValue().set(CacheName.NAME_USER_LOGIN_ERROR_NUM, loginErrorCount+"", 5, TimeUnit.MINUTES);
|
redisTemplate.opsForValue().set(CacheName.NAME_USER_LOGIN_ERROR_NUM+account, loginErrorCount+"", 5, TimeUnit.MINUTES);
|
||||||
return error("用户名或密码错误,您还有"+(5-loginErrorCount)+"次登录机会");
|
return error("用户名或密码错误,您还有"+(5-loginErrorCount)+"次登录机会");
|
||||||
}
|
}
|
||||||
// return error("用户名或密码错误");
|
// return error("用户名或密码错误");
|
||||||
|
|||||||
Reference in New Issue
Block a user