我试图在成功登录后重定向到homepage.html。 但我得到错误和页面没有显示。 我知道这可能是由于2个回复发送或类似的东西。 我之前在stackoverflow上发过这个问题,但没有得到任何答复。如果有人能帮我的话,我真的很愿意回答:)
我还使用了return response.redirect('/home');
,正如其中一个答案中所说的那样,但仍然没有任何效果。
在home路由中,我有一个console.log,它正在工作,但文件没有显示。 所以我猜代码正在重定向到/home
,但没有打开文件。
当我使用console.log(response.HeadersSent);
时,它显示为false。
app.post('/auth', function(request, response) {
var number = request.body.number;
var password = request.body.pwd;
if (number && password) {
var sql = `SELECT
fyp_helpers.Mobile_number AS number,
fyp_helpers.Password AS Password
FROM fyp_helpers
WHERE Mobile_number = ?
UNION
SELECT
fyp_employers.Employer_Contact AS number ,
fyp_employers.Employer_Password AS Employer_Password
FROM fyp_employers
WHERE Employer_Contact = ?`;
connection.query(sql, [number, number], function (error, results, fields) {
if (results.length > 0) {
var hashedPassword = results[0].Password;
bcrypt.compare(password, hashedPassword, function (cryptErr, cryptResult) {
if (cryptResult) {
request.session.loggedin = true;
request.session.number = number;
return response.redirect('/home');
} else {
response.send('Incorrect Password!');
console.log(cryptErr);
}
});
} else {
response.send('User not registered');
}
});
}
else {
response.send('Please enter Username and Password!');
response.end();
}
});
app.get('/home', function(request, response) {
if (request.session.loggedin) {
console.log('I am home');
response.sendFile(path.join(__dirname + '/HomePage.html'));
} else {
response.send('Please login to view this page!');
}
response.end();
});
app.listen(3000);
这里有一个错误。
您不是在等待回调函数。 您应该对connection.query
使用promise,并使用async
显式地等待它返回。
相关问题和一个好的答案可以在这里找到。