【发布时间】:2015-11-20 18:20:15
【问题描述】:
下面的代码有一个新错误。我想做的是建立一个简单的登录系统,但是我在重定向res.redirect('/example') 时遇到了问题。
当我尝试重定向用户时,console.log 说标头已经发送。我知道还有其他类似的问题,但我无法解决这个问题。请帮忙
下面的文件是主控制器:
exports.login = function(req, res){
var email = req.body.email,
password = req.body.password;
User.findOne({email: email, password: password}, function(err,obj) {
if(obj){
console.log(obj);
console.log('Access approved');
req.session.regenerate(function(){
console.log('New session printed to Sessions DB');
req.session.email = email;
res.redirect('/sec');
});
} else if(!email || !password){
console.log('Please insert data');
}else if(err){
console.log('Error');
req.session.regenerate( function(){
req.session.msg = err;
res.redirect('/login');
});
} else {
console.log('errore not authenticated user');
req.session.msg = err;
res.redirect('/login');
}
});
};
这是路由文件:
app.post('/logUser', users.login)
还有节点:
app.use('/login', function(req, res) {
res.sendFile('public/login.html', {root: __dirname });
});
【问题讨论】:
-
您能否准确地发布正在记录到控制台的内容?
-
是的,但在我的控制台上,我只能看到这个“错误:发送后无法设置标题。”
-
当您在发送
res对象后尝试对其进行操作时,通常会发生该错误。通过调用sendFile或redirect,您正在发送它。确保你的代码只做这些事情之一,而不是两者兼而有之。您可以在使用res执行的每个操作之前放置日志,以检查两者是否都被命中
标签: javascript node.js redirect