我有一个使用postgresql进行身份验证的登录表单,我正在尝试检查用户是否存在,然后将客户端重定向到另一页。代码是:
app.post('/login', (req, res) => {
var Enteredusername = req.body.username;
var Enteredpassword = req.body.password;
pool.query("SELECT * FROM tbl_users WHERE username = $1 AND password = $2", [Enteredusername, Enteredpassword], (err, result) => {
if (err) return console.log('error in query', err);
// need to check if user exists
let user = (result.rows.length > 0) ? result.rows[0] : null;
if (!user) {
req.flash('notify', 'This is a test notification.')
res.render('login', {
messages: req.flash('Username or Password is incorrect !')
});
return res.redirect('/login')
}
res.redirect('/posts')
});
});
我得到了错误:
_http_outgoing.js:470 抛出新的ERR_HTTP_HEADERS_SENT('set');
错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后,无法设置标头。
我该如何解决?
答案 0 :(得分:0)
这是在res.redirect('/posts')
和req.flash
之前执行javascript res.render
的异步行为,您可以这样来破解它:
req.session.userId = Enteredusername;
if (!user) {
req.flash('notify', 'This is a test notification.')
res.render('login', {
messages: req.flash('Username or Password is incorrect !')
});
return res.redirect('/login')
}else{
return res.redirect('/posts')
}