【问题标题】:Why is my session expiring every time I close the browser?为什么每次关闭浏览器时会话都会过期?
【发布时间】:2017-01-04 22:35:02
【问题描述】:

我设置了会话 maxAge 的 express 喜欢记录。

这是我的代码:

app.use(session({
    secret: process.env.SESSION_SECRET,
    saveUninitialized: true,
    resave: true,
    maxAge: 1000* 60 * 60 *24 * 365,
    store: new MongoStore({mongooseConnection:mongoose.connection})
}));

但每次我关闭浏览器时,我都会发现自己已登出。

另外,请注意我正在使用 Passport 本地、facebook 和 google 身份验证。

它们都过期了。

在控制台中,我可以看到 expires/maxAge 部分中的 connect.sid 列出了“会话”,而其他 cookie 有日期...

我做错了什么?

【问题讨论】:

  • 会话基于 cookie。如果浏览器关闭时会话消失了,那么可能是因为会话 cookie 离开了浏览器。这可能是因为护照设置指定了非持久会话,或者是因为浏览器有一些设置在浏览器关闭时不保留 cookie。您可以从字面上检查浏览器以查看原始 cookie 是否仍然存在。
  • "在控制台中,我可以看到 expires/maxAge 部分中的 connect.sid 列出了 "Session" 而其他 cookie 有日期......" - 所以这不是浏览器设置。跨度>

标签: node.js session express passport.js express-session


【解决方案1】:

您需要配置您的快速会话,并在session-cookie 上设置maxAge

app.use(express.session({
    cookie : {
        maxAge: 1000* 60 * 60 *24 * 365
    },
    store : new MongoStore({mongooseConnection:mongoose.connection})
});
//.....
app.use(passport.session());

【讨论】:

  • 就是这样!谢谢!
猜你喜欢
  • 2016-12-13
  • 1970-01-01
  • 2012-01-21
  • 2011-04-21
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 2012-02-12
  • 2015-08-12
相关资源
最近更新 更多