Apache Shiroのドキュメントは、(とりわけ)連続して失敗したログイン試行をトラップするためのいくつかの望ましい機能を暗示していますが、これに関する具体的なドキュメントは見つかりません。現在、currentUser.login(token);を実行できます。無効なpwが無限に発生し、このエラーをトラップしてスローしません。これがソースのどこに実装されているかを見つけるのに苦労しています。
これは実際に機能していますか?しきい値はshiro.iniで構成されていますか?誰かが私にこれに関するドキュメントを教えてもらえますか(またはそれが存在しないことを確認できますか)?
ありがとう
環境の詳細:Shiroコア1.2.1およびjdbcレルム
ドキュメントの開始ステップ3:成功または失敗の処理ログインメソッドが静かに戻ってきたら、それで終わりです。これで完了です。サブジェクトは認証されました。アプリケーションスレッドは中断することなく続行でき、SecurityUtils.getSubject()をさらに呼び出すと、認証されたサブジェクトインスタンスが返され、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...
既存の例外クラスの1つがニーズを満たさない場合は、特定の障害シナリオを表すカスタムAuthenticationExceptionsを作成できます//問題はありません。期待どおりに続行します...ドキュメントの終了