Class IncrementalLockoutPolicy
java.lang.Object
io.leandev.appfuse.security.lockout.core.IncrementalLockoutPolicy
- All Implemented Interfaces:
LockoutPolicy
線性遞增鎖定策略
鎖定時間計算公式:offset + (失敗次數 - 閾值) × 基礎單位時間
範例 1(無 offset):
threshold = 5, baseUnit = 1 分鐘, offset = 0
- 第 5 次失敗 → 鎖定 0 分鐘
- 第 6 次失敗 → 鎖定 1 分鐘
- 第 10 次失敗 → 鎖定 5 分鐘
範例 2(有 offset):
threshold = 5, baseUnit = 1 分鐘, offset = 15 分鐘
- 第 5 次失敗 → 鎖定 15 分鐘
- 第 6 次失敗 → 鎖定 16 分鐘
- 第 10 次失敗 → 鎖定 20 分鐘
適用場景:預設策略,平衡安全性與使用者體驗。
-
Constructor Summary
ConstructorsConstructorDescriptionIncrementalLockoutPolicy(int threshold, Duration baseUnit) 建構線性遞增鎖定策略(向後相容)IncrementalLockoutPolicy(int threshold, Duration baseUnit, Duration offset) 建構線性遞增鎖定策略(含起始偏移) -
Method Summary
Modifier and TypeMethodDescriptioncalculateLockoutDuration(int failureCount) 根據失敗次數計算鎖定時間int取得觸發鎖定的失敗次數閾值Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface LockoutPolicy
shouldLockout
-
Constructor Details
-
IncrementalLockoutPolicy
建構線性遞增鎖定策略(向後相容)- Parameters:
threshold- 觸發鎖定的失敗次數閾值(如 5)baseUnit- 基礎單位時間(如 Duration.ofMinutes(1))
-
IncrementalLockoutPolicy
-
-
Method Details
-
getThreshold
public int getThreshold()Description copied from interface:LockoutPolicy取得觸發鎖定的失敗次數閾值- Specified by:
getThresholdin interfaceLockoutPolicy- Returns:
- 閾值(如 5 表示連續失敗 5 次時觸發鎖定)
-
calculateLockoutDuration
Description copied from interface:LockoutPolicy根據失敗次數計算鎖定時間- Specified by:
calculateLockoutDurationin interfaceLockoutPolicy- Parameters:
failureCount- 失敗次數- Returns:
- 鎖定時間
-