0

私は自分の AuthenticationSuccessHandlerとオーバーライドメソッドonAuthenticationSuccessを持っています。ここでは、認証する前にリクエストからのパラメーターを使用していくつかのページにリダイレクトする必要があります(私の意味を理解していただければ幸いです。英語で申し訳ありません)

getRedirectStrategy()。sendRedirect(request、response、targetUrl);

POSTメソッドでこれを行うにはどうすればよいですか(デフォルトではGETメソッドです)

4

1 に答える 1

3

HTTP1.1 307 一時リダイレクトステータス コードsendRedirectを使用して、メソッドなしで実行できます。

しかし、知る限り、これは一般的な方法ではなく、すべての Web ブラウザーがこれをサポートしているわけではありません。

サーバー側の転送があなたのケースに合うかもしれません。

アップデート:

spring-security API を使用して POST リダイレクトを送信する場合は、独自のRedirectStrategyを実装できます。

DefaultRedirectStrategyの使用response.sendRedirectにより302、サーブレットコンテナーによる応答コードの送信が行われます (すべてのコンテナーについてはわかりませんが、少なくとも tomcat send 302)。

更新 2:

307設定応答ステータスと "Location" ヘッダーを自分で送り返すことができます。

resp.setStatus(SC_TEMPORARY_REDIRECT);
resp.setHeader("Location", absoluteRedirectUrl);

この応答を受信したユーザーエージェントは、前の要求で使用されたのと同じ方法を使用して次の要求を行う必要があります。したがって、最初のリクエストがPOSTリダイレクトされた場合、リクエストもリダイレクトされますPOST

于 2012-12-11T13:32:11.643 に答える