J'utilise la sécurité Spring, qui redirige les utilisateurs non authentifiés vers une page de connexion.
Ainsi, lorsqu'un client non authentifié angular envoie une demande GET à un point de terminaison (attend JSON), il reçoit le contenu HTML de la page de connexion et l'analyseur JSON échoue ( Angular2 surveille 302 rediriger lors de la récupération de la ressource )
const httpObservable = this.http.get(urlThatWillRedirect).subscribe(data => ...) // JSON parser will fail
Comment gérer les redirections dans Angular?
Ce n'est pas vraiment propre et je recommanderais de gérer le routage et les états en utilisant Router
et Guards
. Mais si l'analyseur JSON échoue (et il s'agit de la définition de non connecté, vous pouvez peut-être gérer la redirection côté client à l'aide du gestionnaire d'erreurs.
const httpObservable = this.http
.get(urlThatWillRedirect)
.subscribe(
(data) => {//handle data},
(error) => {// redirect to login page}
);
Redirigez votre page vers error
en cas d'anomalie service response
codes. vous pouvez gérer cela en ajoutant une méthode dans la classe service
et en l'ajoutant à catch
de Observable
de réponse. Nous allons probablement gérer ce type de réponse pour 401 ou 403, car @ I46kok a dit d'essayer de changer les codes d'erreur également
public serviceMethod(){
this.http.get(urlThatWillRedirect).catch(this.handleError).subscribe(data =>...);
}
private handleError(error:any){
if(error.code === 403|| error.code === 401){
// clear your user credentials here like localStorage,Auth token etc..
window.location.href = '/#/error';
return Observable.throw(error.json());
}
}