简体   繁体   English

node.js护照本地策略问题

[英]node.js passport local strategy problems

I am new to node.js in general and passport in particular. 我对node.js尤其是护照尤其陌生。 I have exposed a passport configuration in a file by itself like the following: 我已经在文件中公开了护照配置,如下所示:

var LocalStrategy = require('passport-local').Strategy;
var User = require('../models/User');

var messages = {
    100: 'Username and/or password are not correct.',
    101: 'User already exists.'
};

module.exports = function (passport) {

passport.serializeUser(function (user, done) {
    done(null, user._id);
});

passport.deserializeUser(function (id, done) {
    User.findById(id, function (err, user) {
        done(err, user);
    });
});

passport.use('local-login', new LocalStrategy(function (username, password, done) {

    User.findOne({ username: username }, function (err, user) {
        if (err) {
            return done(err);
        }
        if (!user) {
            return done(null, false, req.flash('loginMessage', messages['100']));
        }
        user.comparePassword(password, function (err, isMatch) {
            if (err) {
                return done(err);
            }
            if (isMatch) {
                return done(null, user);
            } else {
                return done(null, false, req.flash('loginMessage', messages['100']));
            }
        });
    });
}));}

in my node routes, i am doing the following to handle the login scenario: 在我的节点路由中,我正在执行以下操作来处理登录方案:

app.post('/login',function(req, res, next){
    console.log('loggin in ')
    passport.authenticate('local-login', function(err, user, info){
        console.log('allo');
        console.log(err);
        console.log(user);
        console.log(info)
    });
});

however I am not getting a response; 但是我没有得到回应; can you please clarify what I am doing wrong. 能否请您澄清我做错了什么。

You need to return the object returned by passport.authenticate 您需要返回 passport.authenticate 返回对象

app.post('/login',function(req, res, next){
    console.log('loggin in ')
/**/return passport.authenticate('local-login', function(err, user, info){
        console.log('allo');
        console.log(err);
        console.log(user);
        console.log(info)
    })(req, res, next);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM