私はスプリングセキュリティ3.1とスプリング3.2をRESTサービスに使用しています。 私はすべてのレスポンスをJSONにするのに苦労しています。ユーザーがリソースにアクセスしようとしたが、まだ認証されていない場合 また、ユーザーが間違ったリクエストをした場合は、エラーメッセージとともにJSONを返したいと思います。JSONレスポンスによるスプリングセキュリティエラー処理
私はすべてのエラー/例外を捕まえるべきグローバルな場所を持つことがより受け入れられるだろうと言及するだけです。
私はスプリングセキュリティ3.1とスプリング3.2をRESTサービスに使用しています。 私はすべてのレスポンスをJSONにするのに苦労しています。ユーザーがリソースにアクセスしようとしたが、まだ認証されていない場合 また、ユーザーが間違ったリクエストをした場合は、エラーメッセージとともにJSONを返したいと思います。JSONレスポンスによるスプリングセキュリティエラー処理
私はすべてのエラー/例外を捕まえるべきグローバルな場所を持つことがより受け入れられるだろうと言及するだけです。
他のすべてのコントローラで拡張されたコントローラークラスを作成しないでください(3.2を使用している場合は@ControllerAdviceを使用します)。そのクラスに例外ハンドラーの注釈付きメソッドを組み込むのはなぜですか?この
@ExceptionHandler(Throwable.class)
public @ResponseBody GenericResponse handleException(Throwable throwable){
//handle exception
}
または読み取り、このブログpost
UPDATE
この返事が遅れて申し訳ありませんのようなもの。ここに私の提案があります。 403レスポンスで失敗するようにしてください。そのためには、春のセキュリティ設定で次のスニペットを追加してください。このBean
<http auto-config="true" use-expressions="true" entry-point-ref="entryPoint">
とクライアント側での
<beans:bean id="entryPoint"
class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" />
とポイントエントリポイント-REF、あなたの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
}
}
を追加私はバネのセキュリティ部分で自分自身を1つ。これに対する解決策はまだ見つかりませんか?理想的には、クライアントが処理できるようにjsonで定義された1つのエラーオブジェクトが必要です。 – Michael