Class IncrementalLockoutPolicy

java.lang.Object
io.leandev.appfuse.security.lockout.core.IncrementalLockoutPolicy
All Implemented Interfaces:
LockoutPolicy

public class IncrementalLockoutPolicy extends Object implements 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 Details

    • IncrementalLockoutPolicy

      public IncrementalLockoutPolicy(int threshold, Duration baseUnit)
      建構線性遞增鎖定策略(向後相容)
      Parameters:
      threshold - 觸發鎖定的失敗次數閾值(如 5)
      baseUnit - 基礎單位時間(如 Duration.ofMinutes(1))
    • IncrementalLockoutPolicy

      public IncrementalLockoutPolicy(int threshold, Duration baseUnit, Duration offset)
      建構線性遞增鎖定策略(含起始偏移)
      Parameters:
      threshold - 觸發鎖定的失敗次數閾值(如 5)
      baseUnit - 基礎單位時間(如 Duration.ofMinutes(1))
      offset - 起始鎖定時間偏移(如 Duration.ofMinutes(15))
  • Method Details

    • getThreshold

      public int getThreshold()
      Description copied from interface: LockoutPolicy
      取得觸發鎖定的失敗次數閾值
      Specified by:
      getThreshold in interface LockoutPolicy
      Returns:
      閾值(如 5 表示連續失敗 5 次時觸發鎖定)
    • calculateLockoutDuration

      public Duration calculateLockoutDuration(int failureCount)
      Description copied from interface: LockoutPolicy
      根據失敗次數計算鎖定時間
      Specified by:
      calculateLockoutDuration in interface LockoutPolicy
      Parameters:
      failureCount - 失敗次數
      Returns:
      鎖定時間