Als meine Website zu 100% aus jQuery bestand, habe ich Folgendes getan:
$.ajaxSetup({
global: true,
error: function(xhr, status, err) {
if (xhr.status == 401) {
window.location = "./index.html";
}
}
});
um einen globalen Handler für 401-Fehler festzulegen. Jetzt verwende ich anglejs mit $resource
und $http
, um meine (REST-) Anforderungen an den Server zu erledigen. Gibt es eine Möglichkeit, einen globalen Fehlerbehandler auf ähnliche Weise mit Angular festzulegen?
javascript
ajax
angularjs
Cricardol
quelle
quelle
Antworten:
Ich baue auch eine Website mit Winkel und bin auf dasselbe Hindernis für die globale 401-Handhabung gestoßen. Ich habe schließlich http interceptor verwendet, als ich auf diesen Blog-Beitrag gestoßen bin. Vielleicht finden Sie es genauso hilfreich wie ich.
"Authentifizierung in AngularJS (oder einer ähnlichen) basierten Anwendung." , Espeo-Software
EDIT: endgültige Lösung
quelle
return response || $q.when(response);
folgt zurückgeben, damit bei einer leeren Antwort auch ein Versprechen-Objekt zurückgegeben wird.Bitte beachten Sie, dass responseInterceptors mit Angular 1.1.4 veraltet sind. Unten finden Sie einen Auszug, der auf den offiziellen Dokumenten basiert und die neue Methode zur Implementierung von Interceptors zeigt.
So sieht es in meinem Projekt mit Coffeescript aus:
quelle
responseError
,rejection
hat alles was du brauchst.$httpProvider...
in einenconfig()
Block eingeschlossen?response
unter derresponseError
Funktion tatsächlich Verweise auf seinrejection
(oder sollte der Name des Parameters in geändert werdenresponse
?Erstellen Sie die Datei
<script type="text/javascript" src="../js/config/httpInterceptor.js" ></script>
mit diesem Inhalt:quelle