我设计了一个登录页面,当我输入正确的登录名和密码时登录成功,而在输入不正确的用户名或密码时登录不会发生。但是,出现此错误:
POST http://localhost:3003/login/authenticate 400(错误请求)
ERROR HttpErrorResponse {header:HttpHeaders,status:400,statusText:“ Bad Request”,url:“ http://localhost:3003/login/authenticate”,ok:false,...}
一切正常,但是,我在控制台中收到错误消息。像这样:
我希望400错误的请求错误不会出现在控制台中。该怎么做?
login.component.ts
login(data) {
console.log("Inside Login");
this.authenticateObj = {
username: data.username,
password: data.password
}
this.http.post("http://localhost:3003/login/authenticate",
this.authenticateObj)
.map(Response => Response)
.catch((err) => {
console.log("err =", err)
alert('Login Failed. Username or Password
is incorrect');
return Observable.throw(err);
})
.subscribe((res: Response) => {
console.log("Inside login authenticate subscribe");
this.info = res;
if (this.info.message == 'Login Successful.') {
console.log("test after login = ", this.info);
if (localStorage.getItem('username') &&
localStorage.getItem('token')) {
alert('Login Successful');
this.router.navigate(['/file-upload/wsdl']);
} else {
this.notification.Error('Unauthorized');
}
}
if (this.info.message == 'error') {
alert('Login Failed');
}
else if (this.info.status == 400) {
alert('Login Failed');
}
})
}
login.controller.js
function authenticateUser(req, res, next) {
console.log("Inside authenticateUser = ", req.body)
LoginService.authenticate(req,req.body)
.then(function (token) {
if (token) {
res.setHeader("authorization",token.token);
res.send({
message: 'Login Successful.',
response: token
});
} else if(res.message == 'Username or Password is
incorrect'){
res.status(401).send({
message: 'Unauthorized. '
});
}
else {
console.log("inside controller, else res.status-400");
res.status(400).send({
message: 'Username or password is incorrect'
});
}
})
.catch(function (err) {
console.log("inside controller, catch res.status 400")
// res.status(400).send(err);
res.status(400).send({
message: 'Username or password is incorrect'
});
});
}
答案 0 :(得分:2)
IMO错误请求是服务器对用户名/密码组合不正确的错误响应。您可以根据自己的要求返回“ 401”或“ 200”。
现在,如果您希望错误不会出现在控制台中,请在subscribe()
中添加错误回调。
this.http.post("http://localhost:3003/login/authenticate", this.authenticateObj)
...
// rest of the code
.subscribe((res: Response) => {
// your code
}, (error) => {
// handle the error here, show some alerts, warnings, etc
console.log(error)
})
答案 1 :(得分:2)
为了正确处理服务器中的错误,必须使用subcribe()
从Rxjs返回的Observable
的{{1}}方法中捕获错误:
http.post