Javascript Passportjs始终执行failureRedirect,没有错误消息
我试图使用passportjs使用mysql创建一个登录函数,但它总是执行失败重定向,没有失败或错误消息 起初,我认为我的db连接有一些问题,但是我的注册函数工作得很好,所以我相信我的passport配置可能是错误的 libs/passport.jsJavascript 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
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;