7

Spring MVC (3.1.1.RELEASE) と Spring Security (3.1.0.RELEASE) を使用しています。

Spring アプリケーションは REST API サーバーであり、Json を渡します。

my security-context.xml には、次の PRE_AUTH_FILTER フィルターが含まれています。

<custom-filter position="PRE_AUTH_FILTER"  ref="siteminderFilter"  />
...
<beans:bean id="siteminderFilter" class=
"com.test.server.util.RequestHeaderAuthenticationFilter" >
    <beans:property name="principalRequestHeader" value="login"/>
    <beans:property name="authenticationManager" ref="authenticationManager" />    
</beans:bean>

私のカスタム RequestHeaderAuthenticationFilter はAbstractPreAuthenticatedProcessingFilterを拡張し、 PreAuthenticatedCredentialsNotFoundException をスローします

そのため、ユーザーは 500 内部サーバー エラーを受け取ります。しかし、代わりに JSON 文字列をユーザーに受け取ってもらいたいのです。出来ますか ?はいの場合、どうすればそれを行うことができますか?

この方法でexceptionMappingsを使用しようとしましたが、うまくいかないようです

<beans:bean id="siteminderFilter" class=
"com.pecunia.server.util.RequestHeaderAuthenticationFilter" >
    <beans:property name="principalRequestHeader" value="login"/>
    <beans:property name="authenticationManager" ref="authenticationManager" />    
   <beans:property name="exceptionMappings">
      <beans:props>
    <beans:prop key="org.springframework.security.web.authentication.preauth.PreAuthenticatedCredentialsNotFoundException">/error.json</beans:prop>
    </beans:props>
   </beans:property>
</beans:bean>

展開時にこのエラーが表示されます:

Bean property 'exceptionMappings' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter

私も試しました

<form-login authentication-failure-handler-ref="authenticationFailureHandler" />
...
<beans:bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
   <beans:property name="exceptionMappings">
      <beans:props>
    <beans:prop key="org.springframework.security.web.authentication.preauth.PreAuthenticatedCredentialsNotFoundException">/error.json</beans:prop>
    </beans:props>
   </beans:property>
</beans:bean>

しかし、エラーも結果もありません (通常の 500 ページのみ)

4

0 に答える 0