web-dev-qa-db-ja.com

angular-リダイレクトの処理方法

私は、未認証のユーザーをログインページにリダイレクトするSpringセキュリティを使用しています。

したがって、認証されていないangularクライアントがGETリクエストをエンドポイントに送信すると(JSONを予期します)、ログインページのHTMLコンテンツを受信し、JSONパーサーが失敗します( Angular2 watch for 302リソース取得時のリダイレクト

const httpObservable = this.http.get(urlThatWillRedirect).subscribe(data => ...) // JSON parser will fail

Angularでリダイレクトをどのように処理できますか?

6
nagy.zsolt.hun

あまりきれいではないので、RouterGuardsを使用してルーティングと状態を処理することをお勧めします。しかし、JSONパーサーが失敗した場合(これはログインしていない場合)の定義ですエラーハンドラーを使用して、クライアント側でリダイレクトを処理できます。

const httpObservable = this.http
                                .get(urlThatWillRedirect)
                                .subscribe(
                                  (data) => {//handle data},
                                  (error) => {// redirect to login page}          
                                ); 
1
Bernhard

異常な場合は、ページをerrorにリダイレクトしてくださいservice responseコード。これを処理するには、serviceクラスにメソッドを追加し、それをcatch of Observable of responseに追加します。 @ I46kokがエラーコードも変更しようと言ったので、おそらく私たちは401または403のこの種の応答を処理します

   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