Node.js 护照验证超时
我刚刚开始我的Node.js之旅,我正试图解决为用户登录制定本地策略的想法 我一直在追踪我的函数,并与Postman一起测试。现在我的孩子被吊死了,我不知道为什么Node.js 护照验证超时,node.js,passport-local,Node.js,Passport Local,我刚刚开始我的Node.js之旅,我正试图解决为用户登录制定本地策略的想法 我一直在追踪我的函数,并与Postman一起测试。现在我的孩子被吊死了,我不知道为什么 passport.use(new LocalStrategy( function(username, password, done){ console.log(username) // <-- this doesn't log User.findOne({userName: usernam
passport.use(new LocalStrategy(
function(username, password, done){
console.log(username) // <-- this doesn't log
User.findOne({userName: username}, function(err, user){
if(err) return done(err);
if(!user){
return done(null, false, {
message: 'Could not login with those details.'
});
}
if(!user.validPassword(password)) {
return done(null, false, {
message: 'Could not login with those details.'
});
}
return done(null, user);
})
}
))
从我所看到的情况来看,初始检查可以忽略字段,但是当它点击passport.authenticate
时,它会挂起,甚至看起来不属于我定义的策略
我一直在浏览文档,我确信我在这里遗漏了一些东西,但就是看不到。如果有人能给我指出正确的方向,我将不胜感激。调用
passport.authenticate
返回一个签名为(req,res,next)
的中间件函数。在您的示例中,您使用了一个功能,因此必须使用处理程序中的相关参数手动调用此结果函数:
app.post('/login', function(req, res){
console.log(req.body)
if(!req.body.userName || !req.body.password ) {
res.status(400),
res.json({"status" : "fail", "message" : "All fields
required"});
return;
}
passport.authenticate('local', function(err, User, info) {
let token;
if(err){
res.status(400),
res.json({"status" : "fail", "message" : err});
return;
}
if (User) {
token = User.generateJwt();
res.status(200);
res.json({"status" : "success", "token" : token });
} else{
res.status(401);
res.json({"status" : "fail", "message" : info });
}
// perform an actual call
})(req, res);
})
还要记住,
passport local
在默认情况下查找username
字段,而不是像在请求的参数验证中那样查找username
太棒了,谢谢你。也将关注用户名默认主题。
app.post('/login', function(req, res){
console.log(req.body)
if(!req.body.userName || !req.body.password ) {
res.status(400),
res.json({"status" : "fail", "message" : "All fields
required"});
return;
}
passport.authenticate('local', function(err, User, info) {
let token;
if(err){
res.status(400),
res.json({"status" : "fail", "message" : err});
return;
}
if (User) {
token = User.generateJwt();
res.status(200);
res.json({"status" : "success", "token" : token });
} else{
res.status(401);
res.json({"status" : "fail", "message" : info });
}
// perform an actual call
})(req, res);
})