2009-07-29 20 views
1

私はSpringセキュリティでAuthenticationProcessingFilterをオーバーライドしようとしています。SpringのAuthenticationProcessingFilterオーバーライド

エラー名 でBeanを作成する 'myPackage.security.SessionCleanerFilter#0'

原因を

<security:http access-decision-manager-ref="accessDecisionManager" > 
     <security:intercept-url .../> 
     <security:form-login login-page='/signin/' authentication-failure-url="/signin/?login_error" default-target-url='/signin/success'/> 
     <security:anonymous/> 
     <security:logout/> 
     <security:remember-me/> 
</security:http> 

<bean class="myPackage.security.SessionCleanerFilter" > 
    <security:custom-filter position="FILTER_SECURITY_INTERCEPTOR" /> 
    <property name="defaultTargetUrl" value="/signin/success" /> 
    <property name="authenticationFailureUrl" value="/signin/?login_error" /> 
    <property name="allowSessionCreation" value="true" /> 
</bean> 

をしかし、これは例外のたくさんの失敗:私はXMLで以下の設定を行っていますinstatiationプロパティの不足に。私はそれらをデフォルトにしたいと思います。それらの設定方法は知っていますか?

答えて

1

は、それはすべきではない:

<security:custom-filter position=“AUTHENTICATION_PROCESSING_FILTER”/> 
0

はまた、自動設定を無効にする必要があります。

<security:http auto-config="false" access-decision-manager-ref="accessDecisionManager"> 

とあなたは同じに設定されているので、その後、あなたはもはや、<security:form-login>タグを必要としますあなたのbeanのプロパティー。

+0

'自動config'を、デフォルトではfalseであるのに役立ちます願っています。 –

0

純粋に従う必要があるアプローチは、カスタムフィルタ内で実際に何をしたいかによって異なります。

私は同様の問題にぶつかり、いくつかの提案のためにこの記事を見てくださいhttps://stackoverflow.com/a/12356510/686478

security:form-loginは、内部的にBeanがすでにHTTP名前空間ハンドラによって定義されているので(それは2.xで呼ばれていたとして、あなたのケースではそのFORM_LOGIN_FILTERまたはAUTHENTICATION_PROCESSING_FILTER)エラーの原因となるAuthenticationProcessingFilterのBean定義を作成し、それゆえ同じ位置でそれを再定義します。リファレンスマニュアルのAdding Your own filterセクションを参照してください。

簡単設定では、自動設定をfalseに設定して<form-login>を削除し、定義済みの位置に認証フィルタを定義します。これにより、セキュリティ設定の使いやすさと可読性が緩和され、the dependencies of your AuthenticationProcessingFilterを管理する必要がありますあなた自身(AuthenticationManager、filterProcessesUrlなどの設定など)。

実際に既存の認証フィルタを上書きしないで、実際には前後の処理をしたい場合は、afterまたはbefore属性を使用してカスタムフィルタを定義することもできます。 。

注:あなたの件名の行に基づいて、私はあなたがFilterSecurityInterceptorの別名であるFILTER_SECURITY_INTERCEPTOR AUTHENTICATION_PROCESSING_FILTERを使用していないことを意図していると推定。

私はこれが古いポストの一種である知っているが、それは必要ありませんので、私は、これはいくつか:)

関連する問題