Verhindern ASP.NET von der Umleitung zum login.aspx
Wir haben eine website, die läuft voll auf AngularJS mit ASP.NET Web-API-back-end mit der folgenden Konfiguration:
- HTML5-routing aktiviert ist Eckig, und es gibt eine rewrite-Regel im web.config direkt alle Datenverkehr an index.html
- MVC ist nicht installiert (nur razor-Seiten)
- Erfolgt die Authentifizierung mithilfe von Formularauthentifizierung und die zugehörigen cookies
Ich habe gerade die Helicon IIS plugin zu haben .htaccess-Passwort geschützt für unseren Entwicklungs-server (es ist ein Chaos, es zu tun mit IIS allein) aber ich habe ein Grundsätzliches problem.
Nachdem ich die Eingabe des basic-auth-credentials, bekomme ich einen redirect auf /login.aspx?ReturnUrl=
und obwohl ich bin mir nicht sicher wer dafür zuständig ist (IIS oder Helicon plugin), wird es mit einem von meinen AngularJS Routen und führen zu einem Fehler.
Wie kann ich verhindern, dass diese Umleitung passiert?
Meine web.config-Authentifizierung bit:
<authentication mode="Forms">
<forms protection="All" timeout="15" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="false" cookieless="UseCookies" enableCrossAppRedirects="false" />
</authentication>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit ASP.NET 4.5.
Sie können deaktivieren Sie die formularbasierte Authentifizierung umleiten
HttpResponse.SuppressFormsAuthenticationRedirect Eigenschaft.
In Global.asax:
Application_BeginRequest
. Auch ist es möglich, zu verwendenHttpContext.Current
stattsender
parameter:HttpContext.Current.Response.SuppressFormsAuthenticationRedirect = true;
Zusammenfassend, ich habe diese in der globalen.asax
und für
IsAjaxRequest()
verwendet diesealso für jeden ajax-request forms-auth wird keine Umleitung mehr. Es ist die beste Lösung, die ich gefunden habe.
Und Optional, setzen Sie diese in den client-code, zum Neuladen der Seite nach dem Empfang den Fehler 401 Antworten.