Passportjs总是执行failureRedirect而没有错误消息

时间:2016-04-29 01:33:22

标签: javascript mysql express passport.js

我正在尝试使用passportjs使用mysql创建一个登录函数,但它总是会在没有失败或错误消息的情况下进行重定向失败。

起初,我认为我的数据库连接存在一些问题,但我的注册功能运行正常,所以我认为我的护照配置可能有误。

库/ passport.js

01/02/2013
01/03/2013
01/04/2013
01/05/2013
01/06/2013
01/07/2013

模型/ user.js的

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

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

passport.deserializeUser(function(id, done) {
    connection.query('SELECT * FROM users WHERE id = ' + id, function(err, rows) {
        done(err, rows[0]);
    })
});

passport.use('local-login', new LocalStrategy({
        usernameField: 'username',
        passwordField: 'password',
        passReqToCallback: true
    },
    function(req, username, password, done) {
        User.findByUsername(username, function(err, users) {
            if (err) throw err;
            if (!users[0]) {
                console.log('Unknown user');
                return done(null, false, {
                    message: 'Unknown user'
                });
            }

            User.comparePassword(password, users[0].password, function(err, isMatch) {
                if (err) throw err;
                if (isMatch)
                    return done(null, users[0]);
                else {
                    console.log('Invalid password');
                    return done(null, false, {
                        message: 'Invalid password'
                    })
                }
            })
        })
    }));

module.exports = passport;

路由/ users.js

var bcrypt = require('bcrypt');
var mysql = require('mysql');
var connection = require('../libs/connection')

module.exports.findByUsername = function(username, callback) {
  connection.query({
        sql: 'SELECT * FROM users WHERE username=?',
        timeout: 10000,
        values: [username]
    }, function(err, results, fields) {
        if (err) throw err;
    console.log(results);
    callback(null, results);
    })
}

module.exports.createUser = function(newUser, callback) {
    bcrypt.hash(newUser.password, 10, function(err, hash) {
        if (err) throw err;
        newUser.password = hash;
        connection.query({
            sql: 'INSERT INTO users(full_name, username, email, password) VALUES (?, ?, ?, ?)',
            timeout: 10000,
            values: [newUser.name, newUser.username, newUser.email, newUser.password]
        }, function(err, results, fields) {
            if (err) {
                callback(err);
                return;
            }
            callback(null, results);
        })
    })
}

module.exports.comparePassword = function(candidatePassword, hash, callback) {
  bcrypt.compare(candidatePassword, hash, function(err, isMatch) {
    if (err) return callback(err);
    callback(null, isMatch);
  })
}

0 个答案:

没有答案