我已经创建了一个用于处理用户登录的服务(通过点击后端服务器,该服务器在成功进行身份验证时以JWT响应)。
login(username: string, password: string): Observable<boolean> {
const headers = new Headers({
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxxxx'
});
const options = new RequestOptions({headers: headers});
const body = new URLSearchParams();
body.set('username', username);
body.set('password', password);
body.set('grant_type', 'password');
return this.http.post('http://localhost:8080/api/oauth/token', body, options)
.map((response: Response) => {
if (response.json() && response.json().access_token) {
window.localStorage.setItem('username', username);
window.localStorage.setItem('id_token', response.json().access_token);
window.localStorage.setItem('refresh_token', response.json().refresh_token);
return true;
} else {
return false;
}
})
.catch(this.handleError);
}
它的工作原理是,它成功地向后端服务器执行发布请求,并正确检索一个令牌,然后该令牌可用于验证未来的请求。但是,在用户输入错误密码的情况下,服务器以400状态响应。虽然我正在捕捉到这种状态(我已通过记录内部信息&#34; handleError&#34;验证了这一点,但Angular还是将默认的POST错误打印到控制台。具体来说:
zone.js:2224 POST http://localhost:8080/api/oauth/token 400 ()
如何阻止它这样做?我正在捕捉错误,正确处理错误但仍然将zone.js错误打印到Chrome控制台。