【问题标题】:How to clear req.session on clearing browser cookies in node js?如何在节点 js 中清除浏览器 cookie 时清除 req.session?
【发布时间】:2017-08-04 14:21:29
【问题描述】:

我使用"express": "~4.14.0"express-session 来保存用户名。用户登录后,我会将用户名保存在req.session.authorizedUser = username 中,以显示在应用程序标题中。

当浏览器历史被清除或浏览器关闭时,我想清除会话。

请建议我在执行这两个操作时是否有任何方法可以清除会话。我试过为会话cookie设置maxAge选项,如下图,但反映不好:

app.use(session({
    secret: "key test",
    resave: false,
    saveUninitialized: true,
    cookie: { secure: !true, path: '/', httpOnly: true, maxAge: null}
}));

【问题讨论】:

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


    【解决方案1】:

    由于浏览器在删除 cookie 时(无论出于何种原因)都不会通知服务器,因此无法仅在服务器端告诉服务器会话是否应该仍然有效。

    这就是为什么大多数会话存储都有过期机制,会在特定时间后删除空闲会话(通常与maxAge 相关联)。

    例如,connect-mongo 会话存储使用 MongoDB 的 TTL 功能从数据库中删除过期会话。

    不过,除了占用一点存储空间之外,空闲会话也不是问题。当用户再次登录时,将为他们创建一个新会话,而旧会话最终将过期并从存储中删除。

    【讨论】:

    • 您能告诉我我们如何在客户端维护会话吗?
    • @DhyaS 你到底是什么意思?您想在客户端知道会话何时过期或什么?
    • 是的.. 没错。但是 JS sessionStorage 在节点 JS 中是未定义的
    • @DhyaS 最终,是服务器确定会话何时到期。客户端通常不知道它是否有有效的会话。确保会话处于活动状态且有效的唯一方法是定期查询服务器。
    猜你喜欢
    • 2010-12-19
    • 2016-07-16
    • 1970-01-01
    • 2016-06-02
    • 2021-07-07
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2017-05-08
    相关资源
    最近更新 更多