From cfe431f7938d40cbf2478119baa8a0eab9b746d6 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期五, 21 四月 2023 12:55:27 +0800
Subject: [PATCH] 登录时密码加密,记录登录错误次数

---
 ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
index c8235e2..3b459dd 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ycl.service.user.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.PageUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.druid.sql.PagerUtils;
@@ -49,6 +50,7 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
@@ -258,12 +260,31 @@
         //瀵嗙爜闇�瑕佸鎴风鍔犲瘑鍚庝紶閫�
         try {
             AdminUserDetails userDetails = (AdminUserDetails) loadUserByUsername(username);
+
+            UmsAdmin admin = userDetails.getUmsAdmin();
+            LocalDateTime nowTime = LocalDateTime.now();
+            nowTime = nowTime.plusMinutes(-15);
+            if (admin.getPasswordErrorNum() != null && admin.getPasswordErrorNum() >= 5
+                    && admin.getPasswordErrorLastTime().isAfter(nowTime)) {
+                admin.setPasswordErrorLastTime(LocalDateTime.now());
+                updateById(admin);
+                Asserts.fail("鐧诲綍澶辫触瓒呰繃5娆★紝姝よ处鍙疯閿佸畾锛岃15鍒嗛挓鍚庡啀璇曘��");
+            }
             if (!passwordEncoder.matches(password, userDetails.getPassword())) {
+                if (admin.getPasswordErrorNum() == null) {
+                    admin.setPasswordErrorNum(1);
+                } else {
+                    admin.setPasswordErrorNum(admin.getPasswordErrorNum() + 1);
+                }
+                admin.setPasswordErrorLastTime(LocalDateTime.now());
+                updateById(admin);
                 Asserts.fail("瀵嗙爜涓嶆纭�");
             }
             if (!userDetails.isEnabled()) {
                 Asserts.fail("甯愬彿宸茶绂佺敤");
             }
+            admin.setPasswordErrorNum(0);
+            updateById(admin);
 
             UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
             SecurityContextHolder.getContext().setAuthentication(authentication);
@@ -430,7 +451,7 @@
             List<UmsMenu> resourceList = getResourceList(admin.getId());
             return new AdminUserDetails(admin, resourceList);
         }
-        throw new UsernameNotFoundException("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+        throw new UsernameNotFoundException("鐢ㄦ埛涓嶅瓨鍦�");
     }
 
     @Override

--
Gitblit v1.8.0