Node.js 护照验证超时

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

我刚刚开始我的Node.js之旅,我正试图解决为用户登录制定本地策略的想法

我一直在追踪我的函数,并与Postman一起测试。现在我的孩子被吊死了,我不知道为什么

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);
})