【发布时间】:2017-08-20 14:05:25
【问题描述】:
我设置了local 策略,但failureRedirect 似乎无法正常工作。当发生连接错误时(例如数据库的 URL 错误),响应是错误 500,而不是重定向到指定的路由。
这是我的路线代码:
router.route('/login')
.post(passport.authenticate('local', {
failureRedirect: '/'
}), function(req, res){
console.log('user logged in');
res.redirect('../console');
});
这是我对local 策略的实现:
module.exports = function(){
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done){
pg.defaults.ssl = true;
pg.connect(process.env.DATABASE_URL, function(err, client) {
if (err){
console.log('Connection issue when logging in: ' + JSON.stringify(err));
done('Error with database,', null); // this is the problem area!!!
} else {
client
.query(`SELECT * FROM agent WHERE email='${email}'`, function(err, result) {
if(err || result.rows.length === 0 ) {
console.log('Query issue when loggin in: '+ JSON.stringify(err));
done(null, false);
} else {
var user = result;
console.log('ready to log user in');
done(null, user);
}
});
}
});
}
));
};
我在想也许我对done() 回调函数的使用是错误的,但我遵循了文档。感谢您的帮助。
【问题讨论】:
-
谢谢,但没有按预期工作:它将错误打印到页面而不是重定向到
failureRedirect中指定的页面 -
酷,现在是什么错误?
-
就像我说的,页面不会重定向到
failureRedirect链接,而是停留在打印错误的按钮action的路径
标签: node.js authentication express passport.js