4

我在 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'

任何想法这可能是什么?

谢谢!

4

2 回答 2

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');
});

试试看!

于 2012-05-31T17:30:37.130 回答
0

没有浪费时间,这里是修复:

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

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

Mozilla 是一个严格的浏览器。她按规矩办事。如果某些东西在 Mozilla 中不起作用但在 chrome 中不起作用,则意味着您做错了。在生产环境中,我们设置 https 。默认情况下 express.session httpOnly 为真,只需将其设为假即可。:) 所以它也可以在 https 上工作。

于 2021-03-14T15:47:27.227 回答