连接到Angular的TFS Api,401未经授权

时间:2017-08-03 07:27:27

标签: angular api authentication tfs authorization

我在第一个Angular应用程序中遇到了API get请求的问题。我正在尝试从服务器获取所有项目,我有正确的URL(它在postman中工作,甚至在我的浏览器中),我也在TFS上从我的帐户生成了一个令牌,但是,我仍然得到一个我在运行应用程序时在控制台中未经授权401。任何帮助都会得到赞赏。我需要提供Windows身份验证吗?它甚至可以在Angular上使用吗?

这是我正在尝试运行的方法。所有导入都在那里,并且从OnInit调用该方法。

  getProjects(): void {
    const authHeader = new HttpHeaders(); 
    authHeader.append('Authorization', 'Bearer ' + 
    `perfectly valid token here`);
    this.http.get('perfectly valid server url here/_apis/projects?api-
    version=1.0', {headers: authHeader}).subscribe(data => {
      this.results = data['results'];
    });
  }

2 个答案:

答案 0 :(得分:0)

我使用基本身份验证工作了。

getProjects(): void {
    const authHeader = new HttpHeaders(); 
    authHeader.append('Authorization', 'Basic ' + 
    base64('Username:Password'));
    this.http.get('perfectly valid server url here/_apis/projects?api-
    version=1.0', {headers: authHeader}).subscribe(data => {
      this.results = data['results'];
    });
  }

答案 1 :(得分:0)

您可以尝试提供Windows身份验证,它可以在Angular上使用。并在项目中启用CORS。

然后检查下面的Cross-origin resource sharing (CORS)示例,在代码中添加授权:

$( document ).ready(function() {
    $.ajax({
        url: 'https://fabrikam.visualstudio.com/defaultcollection/_apis/projects?api-version=1.0',
        dataType: 'json',
        headers: {
            'Authorization': 'Basic ' + btoa("" + ":" + myPatToken)
        }
    }).done(function( results ) {
        console.log( results.value[0].id + " " + results.value[0].name );
    });
});

您可以参考这些文章进行进一步的故障排除: