1

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

<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>

しかし、これは多くの例外で失敗します

'myPackage.security.SessionCleanerFilter#0'という名前のBeanの作成中にエラーが発生しました

インスタレーションプロパティが不足しているため。デフォルトにしたいと思います。それらを構成する方法を知っていますか?

4

3 に答える 3

1

そうではありませんか:

<security:custom-filter position=“AUTHENTICATION_PROCESSING_FILTER”/>
于 2009-07-29T15:32:14.637 に答える
0

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

私は同様の問題に遭遇しました。

security:form-login内部で AuthenticationProcessingFilter の Bean 定義を作成するため、同じ位置 (この場合は2.xで呼び出された FORM_LOGIN_FILTER または AUTHENTICATION_PROCESSING_FILTER ) で再定義すると、Bean が http 名前空間ハンドラーによって既に定義されているため、エラーが発生します。ref マニュアルの「独自のフィルターを追加する」セクションを参照してください。

簡単なオプションは、auto-config を false に設定し<form-login>、事前定義された位置で認証フィルターを削除して定義することですが、これを行うと、セキュリティ構成の使いやすさと読みやすさも失われ、AuthenticationProcessingFilter の依存関係を管理する必要があります。独自のもの (AuthenticationManager、filterProcessesUrl などの設定など)。

既存の認証フィルターを上書きしたくないが、実際には前/後処理を実行したいだけの場合は、別の方法として、実際のフィルターの前または後に呼び出される after または before 属性を使用してカスタム フィルターを定義することもできます。

注:件名に基づいて、FilterSecurityInterceptor のエイリアスである FILTER_SECURITY_INTERCEPTOR ではなく、AUTHENTICATION_PROCESSING_FILTER を使用するつもりであると推測します。

私はこれが一種の時代遅れの投稿であることを知っていますが、これがいくつかの助けになることを願っています:)

于 2012-09-11T01:08:03.197 に答える
0

また、自動構成を無効にする必要があります。

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

<security:form-login>その後、 Bean で同じプロパティを設定しているため、タグは不要になります。

于 2009-11-20T10:01:19.227 に答える