经过大量配置后,我可以使用本地登录护照方法,但只要可以访问电子邮件和密码,我认为它会跳过检查错误
router.post(
'/login',
function(req,res, next){
console.log(req.body.email)
const validationResult = validateLoginForm(req.body);
if (!validationResult.success) {
return res.status(400).json({
success: false,
message: validationResult.message,
errors: validationResult.errors
});
}
return passport.authenticate('local', (err, token, userData) =>
{
if (err) {
if (err.name === 'IncorrectCredentialsError') {
return res.status(400).json({
success: false,
message: err.message
});
}
return res.status(400).json({
success: false,
message: 'Could not process the form.'
});
}
return res.json({
success: true,
message: 'You have successfully logged in!',
token,
user: userData
});
})(req, res, next);
});
在反应方面,即使输入正确的凭据,它也会将登录状态显示为true,但成功则为false
here is the client side code
_login(username, password){
axios({
method:"post",
url: '/auth/login',
data: {
email: username,
password: password
}
}).then(response=>{
// .post(`/auth/login`, {
// username,
// password
// })
// .then(response =>{
console.log(response)
if (response.status ===200){
this.setState({
loggedIn: true,
user: response.data.user
})
}
})
}
答案 0 :(得分:0)
在您定义本地策略的地方查看代码会很有帮助,但是乍一看,err
仅在验证请求时发生异常时设置。您应该检查token
是否为假,以确保身份验证成功。
从PassportJS文档中:
如果身份验证失败,则将用户设置为false。如果有例外 发生时,将设置err。一个可选的info参数将被传递, 包含策略验证提供的其他详细信息 回调。
http://www.passportjs.org/docs/authenticate/#custom-callback