我正在使用带有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'
任何想法可能是什么?
谢谢!
答案 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 上运行。