所以我试着在会话中存储一些信息,供以后使用。但是当我把它拿进来的时候,它不会全部回来。尽管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。
发布于 2018-05-05 21:39:57
我自己解决了这个问题,我甚至没有想过,但是我是从客户端提出请求的,所以当我通过fetch()向app.get('/userinfo', (req, res)=>{ res.json(req.session); });提出请求时
服务器正在返回存储在客户端的会话,而客户端没有使用userId进行更新。因此,我需要从服务器端而不是从客户端请求返回会话数据。
我的解决方案是在服务器端创建和维护一个用户对象,当我需要访问用户数据时,从用户对象获取它。
https://stackoverflow.com/questions/50162094
复制相似问题