Wie entferne ich die Weiterleitung von einem ASP.NET 5-Webapi und gebe HTTP 401 zurück?

7

Nach der Antwort auf diese Frage , ich habe standardmäßig die Berechtigung für alles hinzugefügt, indem ich den folgenden Code verwende:

%Vor%

Wenn jedoch jemand versucht, auf etwas Unbefugtes zuzugreifen, gibt es eine (wie es scheint) Standardumleitungs-URL zurück ( Ссылка ).

Ich möchte, dass es nur eine HTTP 401 anstatt einer Weiterleitung zurückgibt.

Wie kann ich dies in ASP.NET 5 für eine WebAPI tun?

    
Geerten 30.09.2015, 09:53
quelle

5 Antworten

5

Durch die URL, zu der Sie weitergeleitet werden, nehme ich an, dass Sie die Cookie-Authentifizierung verwenden.

Sie sollten die gewünschten Ergebnisse erzielen, indem Sie die LoginPath -Eigenschaft von CookieAuthenticationOptions auf null oder leer setzen, da von einem der Benutzer beschrieben.

%Vor%

Es hat wahrscheinlich damals funktioniert, aber funktioniert nicht mehr (wegen diese Änderung).

Ich habe einen Fehler auf GitHub dafür eingereicht.

Ich werde die Antwort aktualisieren, sobald sie behoben ist.

    
mbudnik 01.10.2015, 10:57
quelle
11

Ich hatte mit diesem Problem in einer Angular2 + ASP.NET Core-Anwendung. Ich habe es auf folgende Weise behoben:

%Vor%

Wenn dies nicht für Sie funktioniert, können Sie stattdessen mit der folgenden Methode versuchen:

%Vor%

Update für Asp.Net Core 2.0

Die Cookie-Optionen sind jetzt wie folgt konfiguriert:

%Vor%     
Darkseal 23.08.2016 01:32
quelle
4

Das Einstellen von LoginPath="" oder null funktioniert nicht mehr mit Version 1.1.0.0. Also hier ist was ich getan habe:

%Vor%     
mode777 04.12.2016 08:50
quelle
1

Beachten Sie, dass Sie das CookieAuthentication nicht nur dann verwenden sollten, wenn Sie Ihren eigenen Authentifizierungsmechanismus verwenden möchten, zum Beispiel den Provider Identity umgehen, was für die meisten von uns nicht der Fall ist.

Der Standardprovider Identity verwendet den CookieAuthenticationOptions hinter der Szene, Sie können ihn wie folgt konfigurieren:

%Vor%

Getestet in der Version 1.0.0

    
amd 11.07.2016 08:55
quelle
0

falls es hilft, unten ist meine antwort - mit dotnet 1.0.1

basiert auf Darkseals Antwort, außer dass ich die Zeile ctx.Response.WriteAsync () hinzufügen musste, um die Umleitung auf die Standard 401 URL (Account / Login) zu stoppen.

%Vor%     
Sean 01.11.2016 12:03
quelle