Node.js expressjs会话不会粘在Firefox中

时间:2012-04-13 22:04:43

标签: session node.js cookies express

我正在使用带有nodejs的express,并且会话不会粘在Firefox中。然而,Chrome中的工作正常。

我的maxAge为14400000,因为我的本地机器在GMT上,所以我读过这个问题可能是一个问题,但它仍然没有坚持下去。

这就是我配置的内容:

  app.use(express.cookieParser());
  app.use(express.session({ secret: 'mysecret', store: new RedisStore, cookie: { maxAge: 14400000 }}));

我只是通过这样做来设置它:

req.session.user = 'something'

任何想法可能是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

首次建立会话时尝试使用req.session. regenerate(callback)。它看起来像这样:

app.use(express.cookieParser());
app.use(express.session({ secret: 'mysecret', store: new RedisStore, cookie: { maxAge: 14400000 }}));

var user = //Define your user

req.session.regenerate(function() {
   req.session.user = user;
   res.redirect('/loggedin');
});

试一试!

答案 1 :(得分:0)

不浪费时间,这里是修复:

app.use(
   session({
   httpOnly: false,
   secret: "top secret",
  })
 );

现在,如果您对真实故事感兴趣:

Mozilla 是一个严格的浏览器。她遵守规则。如果某些东西在 Mozilla 中不起作用,但在 chrome 中不起作用,则意味着您做错了。 在生产环境中,我们设置 https 。并且默认 express.session httpOnly 为 true,只需将其设为 false。 :) 所以它也可以在 https 上运行。