2011-06-13 10 views
0

から私はいくつかのアクセス例外を処理することでSimpleMappingExceptionResolverで春のWeb MVC構成を持っている:アクセス春のWeb MVC例外リゾルバ春のセキュリティコンテキスト

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="uncaughtException"> 
    <property name="exceptionMappings"> 
     <props> 
      <prop key=".DataAccessException">dataAccessFailure</prop> 
      <prop key=".NoSuchRequestHandlingMethodException">resourceNotFound</prop> 
      <prop key=".TypeMismatchException">resourceNotFound</prop> 
      <prop key=".MissingServletRequestParameterException">resourceNotFound</prop> 
     </props> 
    </property> 
</bean> 

また、私は希望の春のセキュリティコンテキストコンフィギュレーションを持っていますいくつかの認証に関連する例外を処理します。現在、私は次のように設定ExceptionMappingAuthenticationFailureHandlerを持っている:

<form-login authentication-failure-handler-ref="exceptionMapper" ... /> 

... 

<bean id="exceptionMapper" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler" > 
    <property name="exceptionMappings"> 
     <props> 
      <prop key=".CredentialsExpiredException">/resetPassword</prop> 
      <prop key=".BadCredentialsException">/login?failure=true</prop> 
     </props> 
    </property> 
</bean> 

私はMVC構成にセキュリティマッピングを移動することで、単一の例外処理の設定にこれらを統合するためにいいだろうと思いました。私の問題は、Spring Securityにform-loginauthentication-failure-handlerがリゾルバを使用するように指示する方法を知らないことです。

1)authentication-failure-handler-refはハンドラではなく、リゾルバを期待し、2)MVC構成で定義されているすべてのBeanはセキュリティコンテキストから見えていないようですので、私はちょうどSimpleMappingExceptionResolveridを追加することはできません。 ..

ありがとうございました!

答えて

0

質問のパート2)に答えるには、<import resource="..."/>タグを使用して構成間でBean定義を共有できます。

APIを見て、クラスが全く異なる、つまり共有インターフェースがないため、パート1)(1つの例外リゾルバ)がどれほど成功するかわかりません。クラスの1つをプラットフォームとして使用して、他のクラスの機能をそのクラスに組み込む必要があります。

関連する問題