web-dev-qa-db-fra.com

angular - comment gérer la redirection

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?

6
nagy.zsolt.hun

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}          
                                ); 
1
Bernhard

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());
       }
   }
0
ganesh045