À partir d'une application Angular 4, j'appelle les services REST déployés sur Tomcat. Pour l'authentification, j'utilise Kerberos et il fonctionne comme prévu pour les cas positifs.Traitement des erreurs d'authentification en réponse
Je suis confronté à un problème dans la gestion des erreurs dans Angular lorsque l'authentification Kerberos échoue (disons parce que l'utilisateur n'existe pas dans AD).
Voici mon code angulaire
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 });
}
Lorsque l'authentification réussit et 200 est renvoyé par le serveur, '(réponse: réponse) => {}' est exécuté comme prévu. Lorsque la réponse est 401 code avec WWW-Authenticate: Negotiate header, ni le bloc 'response' ni le bloc 'error' ne sont exécutés et le navigateur affiche un message 'La page ne peut être affichée'. Lorsque je regarde l'onglet IE 11 Network, cela montre que la réponse a été renvoyée comme 401/Négocier, mais pour une raison quelconque, elle échappe au code angulaire.
Il semble que le navigateur affiche la page ne peut pas être affiché 'un message avant même le code Angulaire avoir une chance de charger.
Comment puis-je m'assurer qu'un bloc de code est exécuté même si l'authentification échoue, afin que je puisse prendre les mesures appropriées comme rediriger l'utilisateur vers la page de connexion.
ajouter un service pour gérer une erreur comme '401' comme https://stackoverflow.com/questions/44108285/angular-4-custom-errorhandler-doesnt-r ecognize-custom-error –