Angular6-SpringBoot基本身份验证

问题描述

我已安装nvm 1.1.7Node.js版本8.11.1。

现在我已经安装了angular@cli版本6.1.3,并使用ng new创建了一个Angular项目。

我正在尝试将Basic Authentication作为服务器来进行SpringBoot。我遵循了大量指南,但是无法在HttpHeader内设置身份验证参数。

如果我写了:

var headers_object = new HttpHeaders();
headers_object.set('Content-Type','application/json');
headers_object.set('Authorization','Basic ' + btoa('guest:guest1234'));

然后:

console.log(headers_object.get('Content-Type'));

它打印null。如果我写了:

const httpOptions = {
  headers: new HttpHeaders({'Content-Type': 'application/json'})
};
console.log(httpOptions.headers.get('Content-Type'));

它打印application/json。如果我检查HttpHeaders代码,则可以清楚地看到set方法

在我的package.json中,看到:

"@angular/animations": "^6.1.0","@angular/common": "^6.1.0","@angular/compiler": "^6.1.0","@angular/core": "^6.1.0","@angular/forms": "^6.1.0","@angular/http": "^6.1.0","@angular/platform-browser": "^6.1.0","@angular/platform-browser-dynamic": "^6.1.0","@angular/router": "^6.1.0","core-js": "^2.5.4","rxjs": "6.0.0","zone.js": "~0.8.26"

怎么了?

--------------------------更新-------------------- ---

我设法发送(我认为..)标题参数如下:

let httpHeaders = new HttpHeaders()
          .set('Authorization','Basic ' + btoa('guest:guest1234'))
          .set('Content-Type','application/json'); 

console.log(httpHeaders.get('Content-Type')); // print correct
const httpOptions = {
  headers: httpHeaders
};
console.log(httpOptions.headers.get('Content-Type')); // print correct

return this.http.get('http://localhost:8080/hello',httpOptions); // return 401!!

我真是为这个愚蠢的事情而发疯... PS:Cors被Chrome扩展程序禁用了。.并且有了Postman,我可以到达服务器了。

解决方法

解决了..问题是服务器端..我忘记了:

.antMatchers(HttpMethod.OPTIONS,"/**").permitAll()

Spring Security Configuration类内部。无论如何,即使没有上述代码,我仍然可以通过Postman访问服务器。

var headers_object = new HttpHeaders();
headers_object.set('Content-Type','application/json');
headers_object.set('Authorization','Basic ' + btoa('guest:guest1234'));
console.log(headers_object.get('Content-Type')); // printing null

我绝对不是Angular的新手,我将在Typescript 2.9文档中进行搜索。

非常感谢任何帮助(或文档提示)!