私は、未認証のユーザーをログインページにリダイレクトするSpringセキュリティを使用しています。
したがって、認証されていないangularクライアントがGETリクエストをエンドポイントに送信すると(JSONを予期します)、ログインページのHTMLコンテンツを受信し、JSONパーサーが失敗します( Angular2 watch for 302リソース取得時のリダイレクト )
const httpObservable = this.http.get(urlThatWillRedirect).subscribe(data => ...) // JSON parser will fail
Angularでリダイレクトをどのように処理できますか?
あまりきれいではないので、Router
とGuards
を使用してルーティングと状態を処理することをお勧めします。しかし、JSONパーサーが失敗した場合(これはログインしていない場合)の定義ですエラーハンドラーを使用して、クライアント側でリダイレクトを処理できます。
const httpObservable = this.http
.get(urlThatWillRedirect)
.subscribe(
(data) => {//handle data},
(error) => {// redirect to login page}
);
異常な場合は、ページを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());
}
}