gpt4 book ai didi

node.js - Angular 2捕获401响应

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:54 26 4
gpt4 key购买 nike

致力于 Angular2/Node。

对于登录,我们有以下内容

login(username: string, password: string): Observable<boolean> {
return this.http.post('http://localhost:3000/api/login', { email: username, password: password })
.map((response: Response) => {
// login successful if there's a jwt token in the response

let token = response.json() && response.json().token;
if (token) {
// set token property
this.token = token;

// store username and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ username: username, token: token }));
// return true to indicate successful login
return true;
} else {
// return false to indicate failed login
return false;
}
}).catch(err =>{
if (err.status === 401)
{
console.log("caught 401 exception");
return false;
}
});

问题是我收到以下错误

Argument of type '(err: any) => boolean' is not assignable to parameter of type '(err: any, caught: Observable) => ObservableInput'. Type 'boolean' is not assignable to type 'ObservableInput'.

而且我不确定需要更改什么才能让它能够捕获 401

用于测试的登录如下所示

this.webapiService.login("Donald@geek.com","moneyIsGood").subscribe(result => {
if (result === true) {
console.log('Username or password is correct');
} else {
console.log('Username or password is incorrect');
}
});

编辑:似乎我错过了关于一起使用 .catch 和订阅的一点,但仍然不确定如何以及为什么。

最佳答案

您可以删除此代码:

.catch(err =>{
if (err.status === 401)
{
console.log("caught 401 exception");
return false;
}
});

或者添加日志记录并抛出异常:

.catch(err => {
console.log("caught exception" + err.status);
return Observable.throw(err);
});

同时添加订阅:

this.webapiService.login("Donald@geek.com","moneyIsGood").subscribe(result => {
console.log('Username or password is correct');
}, error => {
if (error.status === 401){
console.log('Username or password is incorrect');
}
});

关于node.js - Angular 2捕获401响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com