2011-02-04 7 views
3

私は春のセキュリティを使用しています。間違ったユーザー名やパスワードを記録するためにaspectjを使用しています。私は例外のためにloadUserByUsernameをチェックすることによって間違ったユーザ名を傍受することができました。どうやって間違ったパスワードを傍受するのですか?スプリングセキュリティインターセプト間違ったパスワード

Springはユーザーオブジェクトを取得し、入力されたパスワードをユーザーパスワードと照合しているかのように見えます。どのように私は、事前

答えて

2

私はこのような側面についてはあまり考えていないので、このかもしれないヘルプがありません。

まず、間違ったユーザー名と間違ったパスワードを区別する必要がありますか(特に、この情報がユーザーに返される場合)。

デフォルトでは、spring-securityはこれを推奨しません。そのため、デフォルトではどちらの場合でもBadCredentialsExceptionが返されます。

スプリングセキュリティ3.0.x最初protectedretrieveUser()メソッドでユーザを検索した後、protectedadditionalAuthenticationChecks()方法でパスワードの検証を行い(AbstractUserDetailsAuthenticationProviderクラス)publicauthenticate()方法を提供します。

(それがデフォルトでtrueです)falseにプロパティhideUserNotFoundExceptionsを設定することにより、authenticate()方法は間違ったパスワードの場合にUserNotFoundException(間違ったユーザーの場合)とBadCredentialsExceptionをチェックすることができます。

0

おかげで通常使用すると、すべての認証の失敗を処理するためにExceptionTranslationFilterFilterSecurityInterceptorを使用するすべての例外のためにこれを傍受することができます。 The Security Filter Chainのページを見直して、必要なものが得られない場合は質問に説明を加えてください。

+0

いくつかのコードサンプルを手伝ってください。アスペクトを編むには、チェックする必要があるメソッドを用意する必要があります。春のセキュリティには慣れていません。確かではありません。拡張するクラスと、パスワードが間違っているかどうかを確認するメソッドです。 – user373201

関連する問題