无法获得当前的快递会话

时间:2017-01-31 19:07:35

标签: node.js session express mongoose express-session

我想从当前登录的用户设置和检索会话,所以我做了类似这样的事情:

router.post('/login', function (req, res) {
  if (JSON.stringify(req.body) == "{}") {
    return res.status(400).json({ message: "corpo vazio" });
  }

  if (!req.body.email) {
    return res.status(400).json({ message: "tem que especificar um email" });
  }

  if (!req.body.password) {
    return res.status(400).json({ message: "tem que especificar uma password" });
  }

  Loja.findOne({ email: req.body.email }, function (err, loja) {
    if (!loja) {
      return res.status(404).json({ message: "login invalido" });
    }
    if (loja.password != req.body.password) {
      return res.status(400).json({ message: "password invalida" });
    }
    if (err) {
      return res.status(500);
    }
    // se tudo correr bem guarda a sessao do utilizador
    req.session.loja = loja;
    return res.send(req.session.loja);
  });
});

然后检索会话我做这样的事情:

router.get('/confirm-login',function(req,res){
  return res.send(req.session.loja);
});

尝试了我们,第一个效果很好,它向我发送了一个需要存储的完整对象的响应,但是当我在邮递员点击确认登录时它发送给我一个空响应:S,我做错了什么?

1 个答案:

答案 0 :(得分:0)

当你写这样的路线时,你应首先检查session是否存在以及你附加的东西,否则发出正确的回应:

router.get('/confirm-login',function(req,res){
  if ( req.session && req.session.loja ) {
    res.send(req.session.loja);
  } else {
    res.status(401).send({ status: 'Unauthorized'});
  }
});

<小时/> Postman Chrome应用程序无法自行处理cookie。要使用Cookie,您应安装名为Postman Interceptor的Chrome扩展程序(请参阅Documentation)。 因此,如果您使用的是Chrome应用程序,请确保已安装此扩展程序并启用(已启用)。 enter image description here