用Angular2-JWT在离子2中设置动态标头



当用户登录到我的应用程序时,他们必须对他们所属的俱乐部说。一旦他们选择了俱乐部,我将其保存在存储中,然后将其连接到标题。这是我当前拥有的代码:

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()函数在调用标头之前不会返回名称。我知道这个问题是异步。如果我放置返回" clubname",它的工作正常。我该如何解决?

首先,可以简化getSubDomain(),因为您可以直接返回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));
}

相关内容

  • 没有找到相关文章

最新更新