jquery ajaxをGUIに組み込んだコンテンツ管理システムを構築するにあたって、私はハードルに遭遇しました。一部の顧客は、何を書こうとしているのかについて長すぎる思考を費やしているため、サーバーセッションがログアウトしてしまいます。彼らが変更を提出しようとすると、私はサーバーにajax呼び出しを使用してデータを保存します。ajaxフォームの投稿の前にmvcでHTTP認証を確認する
次は、MVCサーバーアプリケーションが「401 Unauthorized」ステータスを返すことが予想されます。その後、jquery ajaxオブジェクトを取得してユーザーにログインさせてから、ユーザーが承認されると変更を再送信することができます。
しかし、MVCアプリケーションから実際に返されるのは、「302 Found」ステータスとログインフォームページへのリダイレクトURLです。ログインフォームページは "200 OK"ステータスコードを返し、jquery ajaxオブジェクトは成功イベントを呼び出し、MVCアプリケーションが何を言っているのかによってユーザーに成功したことを知らせます。
MVCアプリケーションを実行して、それを行うか、ログインページを検出するためにjquery ajaxイベントを変更する必要があると思う方法がありますか?
更新:
私はそのためのコードを、MVCコードとAUTHORIZE属性で見てNotAuthorizedResultを返すために反射板を使用しましたが(0x191 = 401)以下
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
context.HttpContext.Response.StatusCode = 0x191;
}
です
私はおそらく、Forms Authorization HttpModuleが401を見て、リダイレクトを強制していると考えています。あなたはこのような何かを試みることができる
.Net 4.0(おそらく他のバージョンでもわかりません)、FormsAuthenticationはEndRequestハンドラでリダイレクトを実行します。EndRequestを使用した場合、FormsAuthが応答を処理していないことがわかりましたが、PreSendRequestHeadersイベントを使用すると、EndRequestの後の方がずっと良くなりました。この素晴らしい投稿をありがとう。 – womp