5

REST サービスに spring security 3.1 と Spring 3.2 を使用しています。ユーザーが何らかのリソースにアクセスしようとしたが、まだ認証されていない場合など、すべての応答を JSON にするのに苦労しています。また、ユーザーが間違ったリクエストを行った場合、JSON をエラー メッセージとともに返したいと考えています。

言及するだけで、すべてのエラー/例外をキャッチする必要があるグローバルな場所があれば、より受け入れられます。

4

1 に答える 1

3

他のすべてのコントローラーによって拡張されたコントローラークラスを作成し (または 3.2 を使用している場合は @ControllerAdvice を使用)、そのクラスに例外ハンドラー注釈付きメソッドを含めてみませんか? このようなもの

@ExceptionHandler(Throwable.class)
public @ResponseBody GenericResponse handleException(Throwable throwable){
 //handle exception

 }

または、このブログ投稿をお読みください

アップデート

この返信が遅くなって申し訳ありません。これが私の提案です。403 応答で単純に失敗させます。そのためには、Spring セキュリティ構成に次のスニペットを追加するだけです。

<beans:bean id="entryPoint"
    class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />

entrypoint-ref をこの Bean に向ける

<http auto-config="true" use-expressions="true" entry-point-ref="entryPoint">

クライアント側では、AJAX コードにエラー ブロックを追加します。

            error : function( jqXHR, textStatus, errorThrown ){
                if (jqXHR.status == 403){
                    alert('you need to login to do this operation');
                    window.location.href = contextPath+"/signin";
// or whatever you want to
                }
            }
于 2013-08-12T00:58:04.323 に答える