我想从当前登录的用户设置和检索会话,所以我做了类似这样的事情:
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,我做错了什么?
答案 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应用程序,请确保已安装此扩展程序并启用(已启用)。