5

MVC4 フォーム認証が有効な Web サイト内で web-api Web サービスを実行しています。フォーム認証アプリは、web-api Web サービスを使用します。[Authorize] 属性で web-api を保護しました。認証チケットの有効期限が切れている間にMVC4 アプリから web-api を呼び出すと、見苦しいブラウザーのようなログオン ダイアログが表示されます (フォーム認証では機能しません)。私の開発マシン (IIS7.5) ではこれが得られません。よくわかりません! このダイアログが表示されないようにするにはどうすればよいですか? 401を受け取るだけです。

4

2 に答える 2

0

John Galloway は、ASP.NET Web API - Authorizationのスクリーンキャストでこれをうまく説明しています(強くお勧めする時計) 。

以下のような一部の api コントローラーの場合、Authorize属性を使用しています。

[Authorize] 
public class CommentsController : ApiController  
{ 
...
}

クライアントが無許可のリクエストを行った場合、AuthorizationFilter は HTTP API にとって意味のある唯一のことを行い、HTTP ステータス コード 401、Authorization Required を返します。ここでも、API に HTTP を使用する価値に戻ります。何も調整する必要はありません。どのプラットフォームのどのクライアントも、HTTP 401 応答が何を意味するかを知っています。

401 を受け取ったときに何をすべきかを決定するのは、クライアント次第です。この JavaScript / ブラウザー ベースのサンプルでは、​​クライアントのログイン ページにリダイレクトするだけです。

$(function () { 
$("#getCommentsFormsAuth").click(function () { 
    viewModel.comments([]); 
    $.ajax({ url: "/api/comments", 
        accepts: "application/json", 
        cache: false, 
        statusCode: { 
            200: function(data) { 
                viewModel.comments(data); 
            }, 
            401: function(jqXHR, textStatus, errorThrown) { 
                self.location = '/Account/Login/'; 
            } 
        } 
    }); 
}); 
});

この例では、401 に遭遇した場合、何をする必要があるかを決定するのはあなた次第です。

お役に立てれば。

于 2012-10-23T09:56:06.160 に答える
0

サイトを IIS8 サーバーに移動したところ、問題は解決しました...

于 2013-02-05T15:13:16.820 に答える