Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Passportjs始终执行failureRedirect,没有错误消息_Javascript_Mysql_Express_Passport.js - Fatal编程技术网

Javascript Passportjs始终执行failureRedirect,没有错误消息

Javascript Passportjs始终执行failureRedirect,没有错误消息,javascript,mysql,express,passport.js,Javascript,Mysql,Express,Passport.js,我试图使用passportjs使用mysql创建一个登录函数,但它总是执行失败重定向,没有失败或错误消息 起初,我认为我的db连接有一些问题,但是我的注册函数工作得很好,所以我相信我的passport配置可能是错误的 libs/passport.js var passport = require('passport'); var User = require('../models/user'); var LocalStrategy = require('passport-local').Stra

我试图使用passportjs使用mysql创建一个登录函数,但它总是执行失败重定向,没有失败或错误消息

起初,我认为我的db连接有一些问题,但是我的注册函数工作得很好,所以我相信我的passport配置可能是错误的

libs/passport.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;
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);
  })
}
// other stuffs

router.get('/login', function(req, res, next) {
    res.render('login', {
        title: 'Login'
    })
});


router.post('/login', passport.authenticate('local-login', {
        failureRedirect: '/users/login',
        failureFlash: 'Invalid username or password'
    }),
    function(req, res) {
        console.log('Authentication Sucessful');
        req.flash('success', 'You have logged in');
        res.redirect('/');
    });
module.exports = router;
models/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;
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);
  })
}
// other stuffs

router.get('/login', function(req, res, next) {
    res.render('login', {
        title: 'Login'
    })
});


router.post('/login', passport.authenticate('local-login', {
        failureRedirect: '/users/login',
        failureFlash: 'Invalid username or password'
    }),
    function(req, res) {
        console.log('Authentication Sucessful');
        req.flash('success', 'You have logged in');
        res.redirect('/');
    });
module.exports = router;
routes/users.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;
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);
  })
}
// other stuffs

router.get('/login', function(req, res, next) {
    res.render('login', {
        title: 'Login'
    })
});


router.post('/login', passport.authenticate('local-login', {
        failureRedirect: '/users/login',
        failureFlash: 'Invalid username or password'
    }),
    function(req, res) {
        console.log('Authentication Sucessful');
        req.flash('success', 'You have logged in');
        res.redirect('/');
    });
module.exports = router;