Ver Fonte

Dev login

tsurumure há 9 meses atrás
pai
commit
a541120edc

+ 14 - 21
src/main/java/com/backendsys/modules/common/config/security/utils/CountUtilV2.java

@@ -11,41 +11,34 @@ import java.util.concurrent.TimeUnit;
 @Component
 public class CountUtilV2 {
 
-//    @Autowired
-//    private StringRedisTemplate stringRedisTemplate;
-
     @Autowired
     private RedisUtil redisUtil;
 
     /**
      * 判断 2分钟内错误 5次,则出现提示
      */
-    public void setErrorCount(String key, String tag) {
-        Integer timeout = 2;
-        String errKey = key + "-" + tag;
-//        String errValue = stringRedisTemplate.opsForValue().get(errKey);
-        String errValue = redisUtil.getCacheObject(errKey);
-
-        if (errValue == null) {
-            errValue = "1";
-        } else if (Integer.valueOf(errValue) >= 5) {
+    public void setErrorCount(String prefix, String suffix) {
+        Integer timeout = 1;
+        String redisKey = prefix + "-" + suffix;
+        String redisValue = redisUtil.getCacheObject(redisKey);
+
+        if (redisValue == null) {
+            redisValue = "1";
+        } else if (Integer.valueOf(redisValue) >= 5) {
             throw new CustException("错误次数过多,为账号安全,请等待" + timeout + "分钟后重新尝试", ResultEnum.LOCK_CREDENTIALS.getCode());
         } else {
-            errValue = String.valueOf((Integer.valueOf(errValue) + 1));
+            redisValue = String.valueOf((Integer.valueOf(redisValue) + 1));
         }
-//        stringRedisTemplate.opsForValue().set(errKey, errValue, timeout, TimeUnit.MINUTES);
-        redisUtil.setCacheObject(errKey, errValue, timeout, TimeUnit.MINUTES);
-
+        redisUtil.setCacheObject(redisKey, redisValue, timeout, TimeUnit.MINUTES);
     }
     /**
      * 判断是否处于 5次的错误状态
      */
-    public void checkErrorStatus(String key, String tag) {
+    public void checkErrorStatus(String prefix, String suffix) {
         Integer timeout = 2;
-        String errKey = key + "-" + tag;
-//        String errValue = stringRedisTemplate.opsForValue().get(errKey);
-        String errValue = redisUtil.getCacheObject(errKey);
-        if (errValue != null && Integer.valueOf(errValue) >= 5) {
+        String redisKey = prefix + "-" + suffix;
+        String redisValue = redisUtil.getCacheObject(redisKey);
+        if (redisValue != null && Integer.valueOf(redisValue) >= 5) {
             throw new CustException("错误次数过多,为账号安全,请等待" + timeout + "分钟后重新尝试", ResultEnum.LOCK_CREDENTIALS.getCode());
         }
     }

+ 11 - 4
src/main/java/com/backendsys/modules/system/service/impl/SysAuthV2ServiceImpl.java

@@ -13,6 +13,7 @@ import com.backendsys.modules.system.entity.SysMobileArea;
 import com.backendsys.modules.system.entity.SysUser;
 import com.backendsys.modules.system.service.SysAuthV2Service;
 import com.backendsys.utils.response.ResultEnum;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.code.kaptcha.Producer;
 import jakarta.servlet.ServletOutputStream;
 import jakarta.servlet.http.HttpServletRequest;
@@ -87,8 +88,8 @@ public class SysAuthV2ServiceImpl implements SysAuthV2Service {
     @Override
     public Map<String, Object> login(SysAuth sysAuth) {
 
-        System.out.println(sysAuth);
-        System.out.println(httpRequestUtil.getIpAddr());
+//        System.out.println(sysAuth);
+//        System.out.println(httpRequestUtil.getIpAddr());
 
         String username = sysAuth.getUsername();
         String password = sysAuth.getPassword();
@@ -105,7 +106,14 @@ public class SysAuthV2ServiceImpl implements SysAuthV2Service {
         }
 
         // [Method] 判断 用户 是否存在 && 密码是否正确
-//        SysUser sysUser = sysUserDao.selectOne()
+        SysUser sysUser = sysUserDao.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
+        if (sysUser == null) {
+            redisUtil.delete(captchaRedisKey);
+            // 添加错误标记 (2分钟内错误5次,则出现冻结提示)
+            countUtilV2.setErrorCount("login-error", username);
+            throw new CustException("用户名或密码错误", ResultEnum.INVALID_CREDENTIALS.getCode());
+        }
+        System.out.println(sysUser);
 
 //        Map<String, Object> sysUserSimple = sysUserMapper.queryUserByIdOrName(null, username, null, null);
 //        if (sysUserSimple != null) {
@@ -115,7 +123,6 @@ public class SysAuthV2ServiceImpl implements SysAuthV2Service {
 //            stringRedisTemplate.delete(captchaRedisKey);
 //            // 添加错误标记 (2分钟内错误5次,则出现提示)
 //            countUtil.setErrorCount("login-error", username);
-//            //
 //            throw new CustException("用户名或密码错误", ResultEnum.INVALID_CREDENTIALS.getCode());
 //        }
 //