express 中設置 cookie 的小坑


  錯誤代碼

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('/');
    }

  })();
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM