0
私はトークンをリフレッシュするためのAuthenticationServiceと、AuthHttpコールを傍受するインターセプタを持っています。問題は、コールが失敗したときのインターセプタメソッドで、私はrefreshTokenコールを私が作った、それが仕事を得るカント最初のHTTP呼び出しを呼び出す必要が応答を取得する場合:あなたが戻ってきている。このブロックで内部リフレッシュトークンを再試行します。subscribe - angular 4
request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {
return this.intercept(super.request(url, options));
}
intercept(observable: Observable<Response>): Observable<Response> {
return observable.catch((err, source) => {
if (this.isUnauthorized(err.status)) {
//logout the user or do what you want
this.authService.refreshToken().subscribe(result => {
if(!result){
}
HERE THE FIRST FAILED CALL MUST BE CALLED
},
err => {
}
);
if (err instanceof Response) {
return Observable.throw(err.json().message || 'backend server error');
}
return Observable.empty();
} else {
return Observable.throw(err);
}
})
}
が空のリターンを得ることだと思います。最初の呼び出しがb/cに失敗した場合、トークンは期限切れです。それを更新するには遅すぎるでしょうか?サーバーは、現在認証されていない人に新しいトークンを発行しても問題ないことをどのようにして知ることができますか?私のアプリではトークンは*使用できなくなる前にリフレッシュされます*。 – BeetleJuice
有効期限が切れた有効なトークンを持っていて、リフレッシュが1週間以内にしか行えないように、有効期限が切れたトークンがブラックリストにある場合(つまり期限切れのトークンを更新する必要がある) –
これは問題があるようです。基本的に、サーバーは、ユーザーが本物であることを証明するものとして期限切れのトークンを受け入れます。有効期限が過ぎても、認証が必要なもの(たとえば、有効なトークンを取得する)に対してトークンを受け入れないようにする必要はありませんか? – BeetleJuice