Von einer Angular 4 App aus rufe ich REST-Dienste auf Tomcat auf. Für die Authentifizierung verwende ich Kerberos und es funktioniert wie erwartet für positive Fälle.Behandlung von Authentifizierungsfehlern als Antwort
ich ein Problem im Umgang mit Fehlern in Angular bin vor, wenn die Kerberos-Authentifizierung (lassen Sie uns sagen Benutzer aufgrund nicht in AD bestehenden) ausfällt.
Hier ist mein Eckige Code
this.restService.executeGET(url)
.subscribe(
(response: Response) => {
let httpResponseStatus = response.status;
console.log('httpResponseStatus: '+httpResponseStatus+', httpResponseAuthHeader: '+httpResponseAuthHeader)
//Do something with the Response
}
,
(error) => {
//Do something with the Error
console.log('Authenication Failed' + error);
}
)
executeGET(url: string) {
let reqHeaders = new Headers({ 'Content-Type': 'application/json' });
reqHeaders.append('Accept', 'application/json');
return this.http.get(url, { headers: reqHeaders });
}
Wenn die Authentifizierung erfolgreich ist und 200 von dem Server zurückgegeben wird, '(Antwort: Response) => {}' wird wie erwartet ausgeführt. Wenn die Antwort 401-Code mit WWW-Authenticate: Negotiate-Header ist, wird weder der Block "response" noch der Block "error" ausgeführt, und der Browser zeigt die Meldung "Seite kann nicht angezeigt werden" an.
Wenn ich IE 11 Registerkarte Netzwerk aussehen, zeigt es, dass Antwort als 401 zurückgegeben wurde/Verhandeln aber aus irgendeinem Grund ist es den Winkelcode umgehen.
Es scheint, dass Browser die zeigt Meldung ‚kann Seite nicht angezeigt werden‘, noch bevor der Angular Code eine Chance zu laden bekommen.
Wie kann ich sicherstellen, dass einiger Code-Block selbst ausgeführt wird, wenn die Authentifizierung fehlschlägt, so dass ich wie Umleiten Benutzer entsprechende Maßnahmen ergreifen kann zur Login-Seite.
Dienst hinzufügen, um einen Fehler wie '401' wie https://stackoverflow.com/questions/44108285/angular-4-custom-errorhandler-doesnt-r behandeln cognize-custom-error –