设置Express req.session,然后在尝试POST时为空

时间:2018-11-18 07:22:27

标签: node.js express session passport.js

我有一个MERN堆栈博客应用程序,正在作为学习练习进行。我在前端比较舒适,但是在节点方面的经验有限。在完成一些教程之后,我将添加身份验证。我正在使用passport.js作为向Google请求,获取ID并另存为会话信息的框架。但是,登录后,发出发布请求时req.session为空,即使我可以在开发工具中看到一个cookie。

我正在使用bcrypt的哈希值来掩盖实际的ID,但这可能不是最佳实践。

在blogAuth.js中:定义了req.session。

bcrypt.hash(req.user._id.toString(), saltRounds, function(err, hash) { req.session.user = hash; //session is set here. console.log(req.session); res.redirect( http://localhost:8080/articles/loggedIn ); });

但是在api / articles.js中:req.session为空

router.post("/", (req, res, next) => { const { body } = req; // session is empty here. Why? console.log(会话用户,$ {req.session.user} ); console.log(req.session);

我尝试过:

以下是一些相关文件:

服务器端: -app.js -blogAuth.js -passport.js -api/articles.js

客户端: -the POST req

Entire project

我认为这是订购问题。什么是确保我正确订购中间件的好方法?或者,如果订单看起来正确,那么这个问题还会从何而来?

1 个答案:

答案 0 :(得分:1)

您正尝试同时使用cookie-sessionexpress-session。由于这两个对象都将试图控制req.session对象的命运,因此您将始终以空会话结束。

只需删除其中之一,您的会话就会保留。