我在下面的代码中遇到了新的错误。我想要做的是建立一个简单的登录系统,但我有一个重定向res.redirect('/example')
的问题。
当我尝试重定向用户时,console.log表示已经发送了Headers。我知道还有其他类似问题,但我无法解决这个问题。请帮忙
以下文件是主控制器:
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 });
});
答案 0 :(得分:0)
好的,最后我找到了解决方案并且非常简单。
我需要将next();
添加到节点文件中,如下所示:
app.use('/login', function(req, res, next) {
res.sendFile('public/login.html', {root: __dirname });
next();
});
可能会发生这种情况,因为设置next
我可以更改已发送的标头,最后我可以使用res.redirect
重新重置