无法获取当前的快速会话
Can´t get the current 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,我是什么做错了吗?
当你编写这样的路由时,你应该首先检查 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 (See Documentation 的 chrome 扩展。
因此,如果您使用的是 chrome 应用程序,请确保您已安装此扩展程序并将其打开(启用)。
我想设置和检索当前登录用户的会话,所以我做了这样的事情:
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,我是什么做错了吗?
当你编写这样的路由时,你应该首先检查 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 (See Documentation 的 chrome 扩展。 因此,如果您使用的是 chrome 应用程序,请确保您已安装此扩展程序并将其打开(启用)。