所以我试图在会话中存储一些信息,供以后使用。但是当我在反应中取出它时,它并不会全部回来。尽管get路由包含所有数据。
我的思维过程在服务器端,当用户登录时在会话中存储他们的id。然后我将有一个/userinfo
路由转储我在json中需要的所有数据。然后,我可以获取/userinfo
路由并获取响应中的数据。我的代码如下:
继承登记的邮政编码,我console.log
验证会话是否已修改。它是。
User.authenticate(req.body.logemail, req.body.logpassword, function (error, user) {
if (error || !user) {
var err = new Error('Wrong email or password.');
err.status = 401;
return next(err);
} else {
req.session.userId = user._id;
console.log(req.session);
return res.redirect('/');
}
});
然后我有这条路:
app.get('/userinfo', (req, res)=>{
res.json(req.session);
});
如果我只是去localhost:3000/userinfo
json看起来像:
{
"cookie": {
"originalMaxAge": null,
"expires": null,
"httpOnly": true,
"path": "/"
},
"userId": "blahblahblah"
}
所以UserID确实存在。 但是,当我最终在以下内容中获取它时:
fetch('http://localhost:3000/userinfo')
.then(res => res.json())
.then(data => console.log(data));
我回来的只是饼干。我没有 UserId 。我也尝试过将UserId添加到cookie中,只是为了看看它是否正常工作,同样我只是得到了简单的cookie。
答案 0 :(得分:0)
我自己解决了这个问题,我甚至都没想过,但我正在向客户提出请求,所以当我通过fetch()
提出请求时
至
app.get('/userinfo', (req, res)=>{
res.json(req.session);
});
服务器正在返回存储在客户端上的会话,该会话尚未使用userId进行更新。所以我需要从服务器端返回会话数据,而不是从客户端请求返回。
我的解决方案是在服务器端创建和维护User对象,当我需要访问用户数据时,从用户对象中获取它。