因此,我有一条基于用户名和密码输入对用户进行身份验证的路由。第一次验证检查,我似乎无法上班:
exports.user_login = (req, res, next) => {
passport.authenticate('local', { session: false }, (err, user, info) => {
if (err || !user) {
res.status(500).json({
errorMsg: "User could not be authenticated."
});
}
如果我通过邮递员对其进行ping操作,我将得到一个与User could not be authenticated
相匹配的JSON响应。
但是,如果我从客户端代码使用此路由,并尝试对其进行console.log
或其他操作(本质上,我想提取任何errorMsg
,请以状态登录,并将其反映给用户),那么我将得到以下响应:
axios.post("api/auth/login/", user)
.then(res => {
console.log(res);
this.setState({
username: "",
password: ""
})
localStorage.setItem('bdgt', res.data.token);
})
.catch(err => {
console.log(err);
})
我看过我之前做过的其他代码,通常可以正常工作,而且我通常可以访问消息并通过以下方式将其存储为状态:
this.setState({
error: err.errorMsg
})
有什么想法吗?我想念什么?
编辑...如果我只允许它res.json({ errorMsg: "message....."})
...可以正常工作,但是返回一个200
,这显然不是我想要的。
答案 0 :(得分:1)
因此,当axios
收到状态大于或等于400的响应时,将引发异常。您可以像这样
axios.post("api/auth/login/", user)
.then(res => {
console.log(res);
this.setState({
username: "",
password: ""
})
localStorage.setItem('bdgt', res.data.token);
})
.catch(err => {
console.log(err.response.data); // this is your JSON
})