Browse Source

登录失败次数校验

lyhzzz 2 năm trước cách đây
mục cha
commit
f002c048f6

+ 17 - 1
src/main/java/com/fdkankan/manage/service/impl/ManageService.java

@@ -31,6 +31,9 @@ public class ManageService {
 
 
     public ManageLoginResponse login(String ip,String userName, String password) {
+
+        this.checkLoginNum(ip,userName);
+
         if(StringUtils.isBlank(userName) || StringUtils.isBlank(password)){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
@@ -38,7 +41,7 @@ public class ManageService {
         String passwordMd5 = SecurityUtil.MD52(Base64Converter.decode(Base64Converter.subText(password)));
         ManageLoginResponse result = sysUserService.getUserByUserNameAndPassword(userName, passwordMd5);
         if(result == null){
-            this.checkLoginNum(ip,userName);
+            this.addLoginErrorNum(ip,userName);
             throw new BusinessException(ResultCode.PASSWORD_ERROR);
         }
         StpUtil.login(result.getId(), SaLoginConfig
@@ -66,6 +69,18 @@ public class ManageService {
                 if("5".equals(value)){
                     throw new BusinessException(ResultCode.LOGIN_NUM_MUCH);
                 }
+            }
+        }
+    }
+
+    public void addLoginErrorNum(String ip, String userName) {
+        if(StringUtils.isNotBlank(userName)){
+            String redisKey = String.format(RedisKeyUtil.loginNum,userName,ip);
+            if(redisUtil.hasKey(redisKey)){
+                String value = redisUtil.get(redisKey);
+                if("5".equals(value)){
+                    throw new BusinessException(ResultCode.LOGIN_NUM_MUCH);
+                }
                 Integer num = Integer.parseInt(value) + 1;
                 redisUtil.set(redisKey,num.toString(),60 * 5);
             }else {
@@ -73,4 +88,5 @@ public class ManageService {
             }
         }
     }
+
 }