Node.js passport本地策略没有被调用

Node.js passport本地策略没有被调用,node.js,express,passport.js,Node.js,Express,Passport.js,这是我的路线处理程序: exports.login = function(req, res, next) { if (!req.body.username || !req.body.password) next(); passport.authenticate('local'); }; 我知道当我提交登录表单时会执行此操作,req.body.username和req.body.password包含值-ExpressBodyParser正在执行它的操作(我在那里设

这是我的路线处理程序:

exports.login = function(req, res, next) {
    if (!req.body.username || !req.body.password)
        next();
    passport.authenticate('local');
};
我知道当我提交登录表单时会执行此操作,
req.body.username
req.body.password
包含值-ExpressBodyParser正在执行它的操作(我在那里设置了一个断点)

以下是我的本地策略:

passport.use(new LocalStrategy(
        function(username, password, done) {
            console.log('local strategy called with: %s', username);
            var User = bsHelper.getModelFromResource('users');
            User.findOne({ where: {
                email_text: username,
                password_hash: password
            } })
                .then(
                function (user) {
                    if (!user) {
                        return done(null, false, { message: 'Incorrect email.' });
                    }
                    return done(null, user);
                },
                function(err) {
                    return done(err);
                }
            );
        }
    ));
verify回调顶部的语句未记录到控制台


我不知道还要测试什么。我已尝试升级到passport的最新版本…

当您执行passport.authenticate('local')时,它实际上返回一个express router回调样式的函数。因此,您可以调用该函数或在路由器回调中传递该函数:

exports.login = passport.authenticate('local')

exports.login = function(req, res, next) {
    if (!req.body.username || !req.body.password)
        next();
    passport.authenticate('local')(req, res, next) ;
};