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