0

バックエンドサーバー呼び出し用の Web API2 とクライアント側コード用の Angularjs を使用して MVC5 Web アプリケーションを構築しています。アプリケーションは Windows 認証を使用しています。Web API コントローラーの一部のメソッドでは、特定のユーザー ロールに Authorize 属性を設定しました。問題は、認証が失敗したときに、ユーザーがログインするための Windows セキュリティ ダイアログがポップアップすることです。このダイアログが表示されないようにして、特定の URL にリダイレクトするか、エラー ステータス コードとエラー メッセージを返す方法はありますか?

オンラインで検索したところ、OWIN 認証の解決策が見つかりましたが、Windows 認証は見つかりませんでした。

4

1 に答える 1

0

WWW-Authenticate ヘッダーを削除できる Asp.Net Web API でメッセージ ハンドラーを作成します。この方法では、ブラウザーはポップアップを表示しません。このレベルで多くのカスタマイズを行うことができます。

DelegatingHandler独自のメッセージ ハンドラを作成するには、以下のように拡張する必要があります

 public class MyHandler : DelegatingHandler
 {
       protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
       {

               //Your code goes here
               var response = await base.SendAsync(request,cancellationToken);
               if(response.StatusCode == HttpStatusCode.Unauthorized)
               {
                  // remove WWW-Authenticate from the header and add Location header to redirect to a page
                   OR
                 // Create a new response and then return that response
               }
               return response;

       }

 }
于 2016-06-08T16:43:31.587 に答える