我正在使用Ionic2 + Laravel。
我试图制作一个“拦截器”,在我的所有Http请求中将来自LocalStorage的令牌(JWT)放到Header上。(
)
所以,我用一种方法制作了一个服务:
{{1}}问题是:
答案 0 :(得分:0)
关键在于调用Promise对象上的then()
方法。与done()
(返回undefined
)不同,then
返回另一个promise,其值解析为作为参数传递给then
的函数返回的值。你可以利用这两次:一次将你的令牌传递给http.post()
来电,然后再次从你的post()
函数中返回整个承诺:
post(url : string, json : any) : Observable <\Response> {
var headers = new Headers();
return this.local.get("token").then( (tk) => {
headers.append('Authorization', 'Bearer ' + tk);
var options = new RequestOptions({headers: headers});
return tk;
}).then(tk){
return this.http.post(url, JSON.stringify( json ), options);
};
}