錯誤代碼
res.cookie 在異步函數外時,可以正常設置,當res.cookie 在異步函數內時不能正常設置。將最后一句res.redirect('/')也放進異步函數中時,可以正常運行。
router.post('/doLogin', (req, res, next) => {
var md5 = crypto.createHash('md5');
(async () => {
var Users = await myModel.Users.findOne({
where: {
userId: req.body.userId,
}
});
if (Users !== null && Users.psw === md5.update(req.body.psw).digest('base64')) {
console.log("OK!");
res.cookie('remember', req.body.userId, { maxAge: 900000, domain: 'localhost' });
} else {
console.log("NO!");
res.clearCookie('remember');
}
})();
res.redirect('/');
});
改正
router.post('/doLogin', (req, res, next) => {
var md5 = crypto.createHash('md5');
(async () => {
var Users = await myModel.Users.findOne({
where: {
userId: req.body.userId,
}
});
if (Users !== null && Users.psw === md5.update(req.body.psw).digest('base64')) {
console.log("OK!");
res.cookie('remember', req.body.userId, { maxAge: 900000, domain: 'localhost' });
res.redirect('/');
} else {
console.log("NO!");
res.clearCookie('remember');
res.redirect('/');
}
})();
});
