节点会话未在生产中清除

时间:2017-06-12 17:14:15

标签: node.js session

我正在使用带有node和express的客户端会话,但我无法注销用户。

我的退出功能执行了

req.session.user=null 

即:

userRouter.get('/logout', function(req, res, next) {
  req.session.user = null
res.sendStatus(200)
});

(我也试过删除req.user,req.user.destroy()和其他变种)。

在dev env中,在localhost上,它很棒。 在生产环境中,将调用注销,但下次用户刷新浏览器上的页面时,用户仍然会登录。

开发和生产中的相同代码。

有人有任何想法吗? 谢谢....

2 个答案:

答案 0 :(得分:0)

根据client-sessions上的this blog post,你可以使用:

userRouter.get('/logout', function(req, res, next) {
  req.session.reset(); 
  res.sendStatus(200);
});

答案 1 :(得分:0)

所以最后问题是我没有

headers: {
            'Accept': 'application/json',
        },

来自客户的电话。我对此感到有点困惑,似乎服务器只有在客户端有这个头时才会设置会话(通过nginx),而在localhost中,如果没有这个,它会正确设置会话。