express-session 在浏览器关闭时更改会话

express-session Changes the session when the browser is closed

Express (4.16.3) 上的服务器,express-session (1.15.6) 模块可以正常工作。

代码:

// ...
app.use(session({
  secret: 'mySecret',
  resave: false,
  saveUninitialized: true,
  store: new MongoDBStore({
    uri: 'my-url',
    collection: 'sessions'
  })
}))
// ...

问题的实质:我打开 Yandex 浏览器 - 分配一个会话,然后关闭它,当我重新打开它时 - 一个新会话。问题是授权与会话相关。

在 Yandex 浏览器、microsoft EDGE 和所有移动浏览器中都存在该问题,而在 chrome 和 opera 中可以正常运行。

帮忙解决问题或者有什么东西可以替代 express-sessions 模块

发生这种情况是因为您的浏览器默认会在浏览器关闭时使 cookie 过期。为了解决这个问题,您可以将 cookie:{ maxAge: 60000} 添加到您的会话中。

app.use(session({
    secret: 'mySecret',
    resave: false,
    cookie:{ maxAge: 60000}, 
    saveUninitialized: true,
    store: new MongoDBStore({
       uri: 'my-url',
       collection: 'sessions'
 })

如果想让cookie永不过期,最好的办法就是设置一个大的数字。

// this will it expire in 200 years
cookie: { maxAge: 9000000000000}

或一个非常遥远的未来日期 属性。

// this will expire in year 9999 
cookie: {expires: new Date(253402300000000)}