首页 > 解决方案 > Angular 6 - 将 JWT 不记名令牌添加到标头不起作用

问题描述

我正在尝试添加身份验证承载令牌标头,同时从角度 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的标题信息 标题信息

标签: jwtangular6asp.net-core-2.2

解决方案


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


推荐阅读