2011-06-22 9 views
1

私の春のセキュリティフォームベースのログインは、現在の形とデフォルトLdapAuthenticationProviderが含まれていると私は、適切に認証できています。 しかし、そのユーザーが有効になっていることを確認する新しい要件があります。この情報はLDAPの代わりにデータベースにあります。だから私はこれをどうやってやるの? 春のセキュリティ - 認証情報のための2つの別々のソースが

私はsuccessfulAuthentication方法

それともこれを行うには良い方法がある中で、余分なチェックをAbstractAuthenticationProcessingFilterを使用して実行されているはずです。

答えて

0

私はUsernamePasswordAuthenticationFilterを拡張し、attemptAuthentication()をオーバーライドすることは良い方法であると言うだろう。 attemptAuthentication()では、DBデータとLDAPデータの両方をチェックできます。 (thisなど)を使用してユーザー情報を読み込むことができます。

もう一つの方法は、(あなた自身を示唆したように)AbstractAuthenticationProcessingFilterを延長し、このようなFORM_LOGINフィルタの後にフィルタを実行している:

<http ...> 
    ... 
    <custom-filter after="FORM_LOGIN_FILTER" ref="myAuthenticationProcessingFilter" /> 
</http> 

良いアイデアはおそらく、LDAPおよびDB認証のために2つの別々のフィルタを作成することであり、次々と走っていく。あなたが必要な場合は、この方法でそれらのいずれかをオフにすることができます。春のドキュメントの

This部分は、カスタムフィルタであなたを助けます。

関連する問題