From dd29fcb8eff0fe9d442b98bd47738c79f3db136a Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期四, 25 二月 2021 09:56:37 +0800
Subject: [PATCH] 修改密码次数和时间

---
 src/main/java/com/nanometer/smartlab/controller/LoginController.java         |    2 +-
 src/main/webapp/WEB-INF/ehcache.xml                                          |   10 ++++++++++
 src/main/webapp/WEB-INF/spring-shiro.xml                                     |    2 +-
 src/main/java/com/nanometer/smartlab/realm/RetryLimitCredentialsMatcher.java |    6 +++---
 4 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/LoginController.java b/src/main/java/com/nanometer/smartlab/controller/LoginController.java
index 3ac1190..b5a72da 100644
--- a/src/main/java/com/nanometer/smartlab/controller/LoginController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/LoginController.java
@@ -44,7 +44,7 @@
             FacesUtils.warn("用户名不存在");
             return null;
         }  catch (ExcessiveAttemptsException e) {
-            FacesUtils.warn("登陆失败,密码连续输入错误超过5次,锁定5分钟!");
+            FacesUtils.warn("登陆失败,密码连续输入错误超过8次,锁定1分钟!");
             return null;
         } catch (Exception e) {
             logger.error("登陆失败", e);
diff --git a/src/main/java/com/nanometer/smartlab/realm/RetryLimitCredentialsMatcher.java b/src/main/java/com/nanometer/smartlab/realm/RetryLimitCredentialsMatcher.java
index 7f5739c..a11416e 100644
--- a/src/main/java/com/nanometer/smartlab/realm/RetryLimitCredentialsMatcher.java
+++ b/src/main/java/com/nanometer/smartlab/realm/RetryLimitCredentialsMatcher.java
@@ -65,11 +65,11 @@
 			retryCount = new AtomicInteger(0);
 			passwordRetryCache.put(username, retryCount);
 		}
-		if(retryCount.incrementAndGet() > 5) {
+		if(retryCount.incrementAndGet() > 8) {
 			//if retry count > 5 throw
-			logger.warn("username: " + username + " tried to login more than 5 times in period");
+			logger.warn("username: " + username + " tried to login more than 8 times in period");
 //			FacesUtils.warn("用户名: " + username + " 密码连续输入错误超过5次,锁定5分钟!");
-			throw new ExcessiveAttemptsException("用户名: " + username + " 密码连续输入错误超过5次,锁定5分钟!");
+			throw new ExcessiveAttemptsException("用户名: " + username + " 密码连续输入错误超过8次,锁定1分钟!");
 		}
 
 		boolean matches = super.doCredentialsMatch(authcToken, info);
diff --git a/src/main/webapp/WEB-INF/ehcache.xml b/src/main/webapp/WEB-INF/ehcache.xml
index 5fed98f..2950179 100644
--- a/src/main/webapp/WEB-INF/ehcache.xml
+++ b/src/main/webapp/WEB-INF/ehcache.xml
@@ -29,6 +29,16 @@
            statistics="true">
     </cache>
 
+    <!-- 缓存1min -->
+    <cache name="oneMin"
+        maxElementsInMemory="10000"
+        maxElementsOnDisk="100000"
+        eternal="false"
+        timeToIdleSeconds="60"
+        timeToLiveSeconds="60"
+        overflowToDisk="false"
+        diskPersistent="false" />
+
     <!-- 缓存5min -->
     <cache name="fivMin"
            maxElementsInMemory="10000"
diff --git a/src/main/webapp/WEB-INF/spring-shiro.xml b/src/main/webapp/WEB-INF/spring-shiro.xml
index 357bd34..03420b4 100644
--- a/src/main/webapp/WEB-INF/spring-shiro.xml
+++ b/src/main/webapp/WEB-INF/spring-shiro.xml
@@ -117,7 +117,7 @@
     <!-- 密码错误5次锁定5min -->
     <bean id="credentialsMatcher" class="com.nanometer.smartlab.realm.RetryLimitCredentialsMatcher">
         <constructor-arg ref="shiroSpringCacheManager"/>
-        <property name="retryLimitCacheName" value="fivMin"/>
+        <property name="retryLimitCacheName" value="oneMin"/>
         <!-- 密码加密 1次md5,增强密码可修改此处 -->
         <property name="hashAlgorithmName" value="MD5"/>
         <property name="storedCredentialsHexEncoded" value="true"/>

--
Gitblit v1.9.2