我需要在發送每個HTTP請求之前檢查我的令牌未過期。我試圖使注射使用HTTP攔截這樣的:Angular 2 - 在每個Http請求之前注入授權令牌
class HttpInterceptor extends Http {
constructor(backend: ConnectionBackend, defaultOptions: RequestOptions, private _router: Router) {
super(backend, defaultOptions);
}
get(url: string, options?: RequestOptionsArgs): Observable<Response> {
const keycloak$: Observable = KeycloakService.updateToken();
return keycloak$.map((options) => {
return super.get(url, this.getRequestOptionArgs(options));
});
// -> Observable<Observable<Response>>
}
getRequestOptionArgs(options?: RequestOptionsArgs) : RequestOptionsArgs {
if (options == null) {
options = new RequestOptions();
}
if (options.headers == null) {
options.headers = new Headers();
}
options.headers.append('Content-Type', 'application/json');
return options;
}
}
我怎樣才能實現可觀察到的依賴。 KeycloakService.updateToken()
返回另一個Observable
,所以我需要等待響應,然後添加授權標頭。我會很感激任何提示。
如何你的'KeycloakService.updateToken()'返回一個可觀察?我從Keycloak網站獲得的代碼返回一個Promise。你能指點我在哪裏可以找到Observable版本的代碼?謝謝! – FilmiHero