0
안녕하세요 나는 토큰과 AuthHttp 호출을 가로 채는 인터셉터를 새로 고치기 위해 서비스 AuthenticationService가 있습니다. 문제는 호출이 실패 할 때 interceptor 메소드에서 refreshtoken 호출이 observable을 구독하는 것입니다. 내가 응답을 얻을 때 나는이 일을 얻을 만들어진 최초의 HTTP 호출을 호출하고 캔트해야 당신이 반환하는이 블록에내부에서 새로 고침 토큰 구독 - 앵글 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