大佬教程收集整理的这篇文章主要介绍了node.js – 在Passport.js认证失败时发送JSON响应,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// This is in user.js,my user model UserscheR_971_11845@a.static('authenticate',function(username,password,callBACk) { this.findOne({ username: username },function(err,user) { if (err){ console.log('findOne error occurred'); return callBACk(err); } if (!user){ return callBACk(null,falsE); } user.verifypassword(password,passwordCorrect){ if (err){ console.log('verifypassword error occurred'); return callBACk(err); } if (!passwordCorrect){ console.log('Wrong password'); return callBACk(err,falsE); } console.log('User Found,returning user'); return callBACk(null,user); }); }); });
和
// This is in app.js app.get('/loginfail',function(req,res){ res.json(403,{message: 'Invalid username/password'}); }); app.post('/login',passport.authenticate('local',{ failureRedirect: '/loginfail',failureFlash: false }),res) { res.redirect('/'); });
现在,我已经设法将失败的登录重定向到/ loginfail,在那里我将一些JSON发送回iPhone客户端。然而,这没有足够的粒度。我想能够发回适当的错误到iPhone客户端,如:“没有找到用户”或“密码错误”。使用我现有的代码,我不知道如何这可以实现。
我试图关注在passport.js网站上的自定义回调的示例,但我只是无法得到它的工作,由于缺乏节点的理解。我如何修改我的代码,以便我能够发回一个res.json与适当的错误代码/消息?
编辑:我现在试图这样的东西:
// In app.js app.post('/login',res,next) { passport.authenticate('local',user,info) { if (err) { return next(err) } if (!user) { console.log(info); // *** Display message without using flash option // re-render the login form with a message return res.redirect('/login'); } console.log('got user'); return res.json(200,{user_id: user._iD}); })(req,next); }); // In user.js UserscheR_971_11845@a.static('authenticate',passwordCorrect){ if (err){ return callBACk(err); } if (!passwordCorrect){ return callBACk(err,false,{message: 'bad password'}); } console.log('User Found,user); }); }); });
但回到我尝试console.log(信息),它只是说未定义。我不知道如何获得这个自定义回调工作…任何帮助将不胜感激!
以上是大佬教程为你收集整理的node.js – 在Passport.js认证失败时发送JSON响应全部内容,希望文章能够帮你解决node.js – 在Passport.js认证失败时发送JSON响应所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。