0

Ich bin eine MVC5-Webanwendung mit Web-API2 für Back-End-Server-Aufrufe und Angularjs für clientseitige Code erstellen. Die Anwendung verwendet die Windows-Authentifizierung. Für einige Methoden im Web-API-Controller habe ich das Autorize-Attribut für eine bestimmte Benutzerrolle festgelegt. Wenn die Authentifizierung fehlgeschlagen ist, wird das Windows-Sicherheitsdialogfeld angezeigt, in dem sich der Benutzer anmelden kann. Gibt es eine Möglichkeit, zu verhindern, dass dieser Dialog angezeigt wird, und entweder auf eine bestimmte URL umleitet oder einen Fehlerstatuscode und eine Fehlermeldung zurückgibt?So verhindern 302 Umleitung mit Windows-Authentifizierung

Ich suchte online und fand Lösungen für OWIN-Authentifizierung, aber keine Windows-Authentifizierung.

Antwort

0

Erstellen Sie einen Nachrichtenhandler in Asp.Net Web API, wo Sie WWW-Authenticate Header entfernen können, auf diese Weise wird der Browser kein Popup geben. Sie können viele Anpassungen auf dieser Ebene vornehmen.

Sie Message Handler besitzen erstellen müssen Sie die DelegatingHandler wie erweitern unter

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; 

     } 

} 
+0

das funktioniert. Vielen Dank! – user1214916

+0

Ich kann es zum Laufen bringen, wenn ich eine neue Antwort erstelle, aber was soll ich tun, wenn ich den Status 401 behalten möchte? Ich schaue auf die Antwort.Headers.WwwAuthenticate, die leer ist und response.Location ist null. – user1214916

Verwandte Themen