node express-session 如何设置session,当浏览器关闭时过期,或者会话维持超过30分钟也过期

tomcat 可以设置session过期策略:浏览器关闭或者超时,
但是express-session设置了cookie.maxAge后,浏览器关闭并不会导致session过期,
那在node环境下如何实现这种策略呢

阅读 4.2k
1 个回答

试着选用"会话cookie" (具体google),然后 node 处理请求时,删除超时的 cookie。

const TIMEOUT = 1000 * 60 * 30; // 30 分钟

let middleware = function (req, res) {
    let now = Date.now(); // 当前时间戳
    // 距离上次是否超时
    let isTimeout = req.session.ts && now - req.session.ts > TIMEOUT; 
    if (isTimeout) {
        req.session.destroy(); // 清除 session
    } else {
        req.session.ts = Date.now(); // 更新
    }
}

// 在 express-session 之后,其他路由处理前使用中间件
app.use(middleware);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题