我对浏览器制作的基本身份验证弹出窗口有问题。尽管有 Angular 中的登录表单,但在输入凭据并单击登录按钮后,浏览器会创建基本身份验证弹出窗口。当我登录浏览器弹出窗口时,一切正常。在每个请求中都有这些标头:
private createLoginHeaders(email: string, password: string): Headers {
let headers: Headers = new Headers();
headers.append("Authorization", "Basic " + btoa(email + ":" + password));
headers.append("Content-Type", "application/x-www-form-urlencoded");
headers.append("X-Requested-With", "XMLHttpRequest");
return headers;
}
Run Code Online (Sandbox Code Playgroud)
并且标头应用于此请求:
login(email: string, password: string): Observable<User> {
let headers = this.createLoginHeaders(email, password);
return this.http.post<User>(`api/user/secure/current`, {headers: headers}).do(
(user: User) => {
this.saveUserToLocalStorage(user);
}
).catch(err => {
if (err.status === 401) {
return Observable.throw('Unauthorized');
}
});
}
Run Code Online (Sandbox Code Playgroud)
Do() 函数可以在我得到响应时做一些事情而不改变可观察对象中的任何内容。下面是上面代码的消费者方法:
login(email: string, password: string) {
if(!this.authenticationService.isAuthenticated()) {
this.authenticationService.login(email, password).subscribe(
() => …Run Code Online (Sandbox Code Playgroud)