0
AuthHttp 서비스 (angular2-jwt)에 대한 '인터셉터'를 만들려고합니다. AuthHttp를 확장 한 클래스를 만들어 대신 사용했습니다. 지금까지 잘 작동하는 것 같습니다. 내가 지금하고 싶은 것은 서버가 401 코드로 응답하면 앱 내에서 로그 아웃을 강제하고 다음 구독을 무시하는 것입니다. (이러한 구독이 순차적으로 실행되는지 확실하지 않아서, 물어볼 수 있습니다.).각도 2에서 관찰 가능한 구독 순서를 중단합니다.
이 시나리오에서 오류를 표시하기 만하면이 구독에서 대기열을 중단하고 추가 구독을 무시하면됩니다. get 메소드를 위해 지금까지 얻은 코드는 다음과 같습니다.
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
let observable = super.get(url, options);
observable.subscribe(
() => { },
(error: Response) => {
if (error.status === 401) {
// Logout and ignore all other subscriptions
}
}
);
return observable;
}
이것이 가능합니까?
감사합니다.
답변 주셔서 감사하지만 나는 이것으로 무엇을 성취 할 것인지 이해하지 못합니다. 테스트로서 나는 당신의 코드를 붙여 넣었고 console.log에 '탈퇴'를 넣었다. 다른 구독 (.get()을 사용하여 나머지 API를 호출하고 관찰 가능 항목에 가입하는 서비스에서) 다른 문자열과 함께 다른 console.log를 작성했습니다. 이 두 가지 모두 콘솔에 인쇄됩니다. 내가 피하고 싶은 것은이 observable의 다른 오류 처리기가 실행되지 않는다는 것입니다. –
그렇다면 귀하의 질문을 이해할 수 있는지 잘 모르겠습니다. 문제를 좀더 자세히 설명해 주시겠습니까? – yarons
REST API에 대한 로그인이 필요한 APP를 설정했습니다. 로그인 할 때, 앱은 저장되고 (AuthHttp로) 모든 보안 API 호출의 유효성을 검사하는 데 사용되는 jwt 토큰을 발행합니다. 데이터를 검색 할 때 게시물을 사용하거나 전화를 받고 구독하여 검색하거나 오류를 표시합니다 (연결할 수 없습니다). 서버에서 호출의 유효성을 검사 할 수없는 경우 401을 반환합니다. 모든 인증 된 호출을 확인하는 함수 (인터셉터)를 추가하고 서버가 401을 반환하면 로그 아웃하고 다른 모든 오류 검사를 건너 뛸 수 있습니다. 가능한 경우 구독했다. –