我正在使用passport,jwt在nodeJs中进行身份验证。我已经创建了api.It在postman中工作得很好。但我坚持使用错误消息渲染前端。我的api是:
app.post('/api/login',(req, res, next) => {
if (req.body.name == '' || req.body.password == '') {
res.json({
message: 'Please fill all the fields'
})
req.flash('errorMsg', 'Please fill all the fields')
} else if (!regExp.test(req.body.name)) {
res.json({
message: 'Only alphabets and numbers are allowed'
})
} else if ((req.body.password.length < 4)) {
res.json({
message: 'Password must be 4 character length and more'
})
}
else {
let user = users[_.findIndex(users, {
name: req.body.name
})];
if (user === undefined) {
res.status(401).json({
message: 'User not defined'
})
} else {
if (user.password === req.body.password) {
let payload = {
id: user.id
};
let token = jwt.sign(payload, config.jwtSecret);
localStorage.setItem('token', token);
res.json({
message: "ok",
token: token
});
} else {
res.status(401).json({
message: 'Password did not match'
})
}
}
}
});
我如何在前端显示这些错误。我使用把手作为查看引擎。例如,如果密码不匹配,则在前端显示密码错误消息。我已经设置了使用护照jwt策略的中间件。
答案 0 :(得分:0)
“我如何在前端显示这些错误”
您必须捕获/处理从客户端服务器端抛出的错误,如其未定义所示,您应该使用AJAX请求并处理作为响应发送的错误(由状态代码标识)你的服务器端。
然后,您可以显示一个警告框,说明发生的错误。下面是使用查询ajax http://api.jquery.com/jquery.ajax/
时的情况示例$.ajax("www.yourapplication.com/api/login", {
dataType:"JSON"
data: { password=password, name='example' }
}).succes(function (result) {
// redirect to authenticated page
}).error(function (jqXHR, textStatus, errorThrown) {
alert('Error message');
});