0

我正在尝试添加身份验证承载令牌标头,同时从角度 6 中的 asp.net core 2.2 后端获取评论

getComment(postId: number): Observable<IComment[]>{
    let headers = new HttpHeaders();
    headers.append('Content-Type', 'application/json');
    let authToken = localStorage.getItem('auth_token');
    headers.append('Authorization', 'Bearer ' + authToken);
    console.log(authToken);
    return this.httpClient.get<IComment[]>('api/comment/post/' + postId, { headers });
  }

这段代码不起作用。我从 console.log(authToken) 得到一个值。当我在 Postman 中复制令牌时,一切正常。

我在服务中的登录功能。这很好,我从后端获取令牌。

 login(login: ILogin) {
    console.log(login);
    return this.http
      .post('api/auth/login', login)
      .pipe(map((res: any) => {
        localStorage.setItem('auth_token', res.auth_token);
        this.loggedIn = true;
        this._authNavStatusSource.next(true);
        return true;
      }));
  }

当我从后端的操作中删除授权时,获取评论工作正常。正如您在下图中看到的,jwt 令牌只是没有被添加到标题中。

邮差: 邮差

来自chrome的标题信息 标题信息

4

2 回答 2

1

您没有在{ headers }节中传递标题。更改return this.httpClient.get<IComment[]>('api/comment/post/' + postId, { headers });return this.httpClient.get<IComment[]>('api/comment/post/' + postId, { headers: headers });

于 2018-09-24T04:21:31.397 回答
0

当你说它通过 Postman 工作正常,并且这不是 CORS 问题(即,要么启用了 CORS,要么你的 JS 与你的 API 来自同一来源),我假设你已经订阅了返回的Observable<IComment[]>.

上面的代码不会发出请求,直到某处有如下所示的调用:

yourService.getComment(postId).subscribe(comments => { ... });

这将开始使用Observable并触发底层 HTTP 请求。

于 2018-09-24T02:02:52.550 回答