尽管正确发布了令牌

时间:2018-01-15 23:46:48

标签: javascript angular authorization jwt

我有以下工作方法来返回我的对象​​。

getWorkers(): any {
  const url = ...
  return new Observable<any>(emitter => {
    this.http.get(url).subscribe(
      result => {
        result.json().map(...).forEach(...);
        emitter.complete();
      },
      error => error);
  });
}

现在,我通过JWT保护端点对后端进行了更改。当然,原始方法现在失败了,我已经添加了从REST API获取令牌。它正在返回正确的哈希值。问题是,我不确定如何将其插入原始响应中。

getWorkers(): any {
  const url = ...

  this.http.post(environment.sec, { credential: "1234" })
    .subscribe(secRes => console.warn(secRes.json()));

  return new Observable<any>(emitter => {
    let authorization = null;

    this.http.post(environment.secUrl, { credential: "1234" })
      .subscribe(
        secRes => {
          authorization = secRes.json();

          this.http.get(url, authorization).subscribe(
            result => {
              result.json().map(...).forEach(...);
              emitter.complete();
            },
            error => error);
        });
  });
}

我尝试在第一次调用中发送一些结果,例如 authorization 对象的完整以及 authorization.token 字段。什么都没有产生不同的结果 - 它是未经授权的。事实上,我注意到程序甚至没有执行结果部分中的语句!

我可以做错什么?

NB。我想了解它的机制,所以我想在不使用任何第三方软件包的情况下解决它,包括通常建议的angular2-jwt

1 个答案:

答案 0 :(得分:0)

授权令牌需要在标题中传递

const headers = new HttpHeaders().set('Authorization', 'Bearer ' + Cookie.get('token'));
return this.httpClient.get(environment.api_url + 'orders', {
  headers: headers}
);