使用 angular2-jwt 在 Ionic 2 中设置动态 headers
Set dynamic headers in Ionic 2 with angular2-jwt
当用户登录我的应用程序时,他们必须说出他们属于哪个俱乐部。一旦他们 select 俱乐部,我将其保存在存储中并将其附加到 header。这是我目前拥有的代码:
let storage: Storage = new Storage();
export function getSubdomain(){
return new Promise((resolve, reject) => {
storage.get('club').then(club => {
console.log(club);
resolve(club)
})
});
}
export function getAuthHttp(http: Http, options: RequestOptions) {
return new AuthHttp(new AuthConfig({
noJwtError: true,
globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': getSubdomain()}],
tokenGetter: (() => storage.get('id_token'))
}), http, options);
}
问题是 getSubdomain()
函数没有 return 调用 header 之前的名称。我知道问题是异步的。如果我输入 return "clubname",它工作得很好。我该如何解决?
首先,getSubDomain()
可以简化为您可以直接 return storage.get('club')
结果。
正如你提到的你的问题是一个异步问题,你可以通过在创建另一个之前等待承诺结束来解决它,就像这样:
export function getAuthHttp(http: Http, options: RequestOptions) {
return getSubDomain().then(subDomain =>
new AuthHttp(new AuthConfig({
noJwtError: true,
globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': subDomain}],
tokenGetter: (() => storage.get('id_token'))
}), http, options));
}
我无法使用 Storage
解决问题,所以我不得不使用 localstorage.getItem('club')
,因为它具有同步功能,看起来像这样:
export function getAuthHttp(http: Http, options: RequestOptions) {
return getSubDomain().then(subDomain =>
new AuthHttp(new AuthConfig({
noJwtError: true,
globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': localstorage.getItem('club')}],
tokenGetter: (() => storage.get('id_token'))
}), http, options));
}
当用户登录我的应用程序时,他们必须说出他们属于哪个俱乐部。一旦他们 select 俱乐部,我将其保存在存储中并将其附加到 header。这是我目前拥有的代码:
let storage: Storage = new Storage();
export function getSubdomain(){
return new Promise((resolve, reject) => {
storage.get('club').then(club => {
console.log(club);
resolve(club)
})
});
}
export function getAuthHttp(http: Http, options: RequestOptions) {
return new AuthHttp(new AuthConfig({
noJwtError: true,
globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': getSubdomain()}],
tokenGetter: (() => storage.get('id_token'))
}), http, options);
}
问题是 getSubdomain()
函数没有 return 调用 header 之前的名称。我知道问题是异步的。如果我输入 return "clubname",它工作得很好。我该如何解决?
首先,getSubDomain()
可以简化为您可以直接 return storage.get('club')
结果。
正如你提到的你的问题是一个异步问题,你可以通过在创建另一个之前等待承诺结束来解决它,就像这样:
export function getAuthHttp(http: Http, options: RequestOptions) {
return getSubDomain().then(subDomain =>
new AuthHttp(new AuthConfig({
noJwtError: true,
globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': subDomain}],
tokenGetter: (() => storage.get('id_token'))
}), http, options));
}
我无法使用 Storage
解决问题,所以我不得不使用 localstorage.getItem('club')
,因为它具有同步功能,看起来像这样:
export function getAuthHttp(http: Http, options: RequestOptions) {
return getSubDomain().then(subDomain =>
new AuthHttp(new AuthConfig({
noJwtError: true,
globalHeaders: [{'Content-Type': 'application/json'}, {'x-academy': localstorage.getItem('club')}],
tokenGetter: (() => storage.get('id_token'))
}), http, options));
}