Apache Shiro文檔暗示了一些用於捕獲連續失敗登錄嘗試(除其他外)的所需功能,但是我找不到具體的文檔。目前我可以執行currentUser.login(token);無效的無限次數,不會陷入並拋出這個錯誤。我正在努力尋找源代碼在哪裏實現。如何爲Apache Shiro配置threashold過度失敗登錄嘗試?
這是真的有用嗎?是否在shiro.ini中配置了閾值?任何人都可以指向我的文檔(或確認它不存在)?
感謝
環境細節:四郎核心1.2.1和JDBC領域
開始文檔 步驟3:處理成功或失敗 如果登錄方法悄悄地返回,這就是它 - 我們就大功告成了!主題已通過身份驗證。應用程序線程可以繼續不間斷地進行,所有對SecurityUtils.getSubject()的進一步調用都將返回經過身份驗證的Subject實例,並且對subject.isAuthenticated()的任何調用都將返回true。
但是如果登錄嘗試失敗會發生什麼?例如,如果最終用戶提供了不正確的密碼,或者訪問了系統太多次並且他們的帳戶被鎖定了,該怎麼辦?
Shiro具有豐富的運行時AuthenticationException層次結構,可以準確指示嘗試失敗的原因。你可以在try/catch塊中包裝登錄,並捕獲你希望的任何異常,並相應地對它們做出反應。例如:
try {
currentUser.login(token);
} catch (UnknownAccountException uae) { ...
} catch (IncorrectCredentialsException ice) { ...
} catch (LockedAccountException lae) { ...
} catch (**ExcessiveAttemptsException** eae) { ...
} ... catch your own ...
} catch (AuthenticationException ae) {
//unexpected error?
}
//No problems, continue on as expected...
如果現有的異常類的一個不符合您的需要,可以創建自定義AuthenticationExceptions代表具體的故障場景 //沒有問題,繼續如預期... 完文件建立