【问题标题】:How can I do something right before the session expire(destroy)如何在会话到期之前做某事(销毁)
【发布时间】:2012-10-20 22:57:55
【问题描述】:

您好,我将expressjs 用于我的Web 应用程序,并且我使用session 中间件,我的问题是如何在会话到期之前立即执行某些操作?

例如,我在会话中存储了一些东西,我将req.session.cookie.maxAge 设置为 60000(1 分钟),当会话超时时,我想将会话中的数据保存到磁盘,我该怎么做呢?我查了API,destroy函数只支持callback...

谢谢!

【问题讨论】:

    标签: node.js session express


    【解决方案1】:

    假设您使用的是connect-session,没有什么比会话过期事件更重要的了。

    会话到期:

    • 在客户端上(当 cookie 过时时)。在发出请求之前无法知道它,因此存在永远不会触发事件的危险。
    • 在会话存储中,通常使用某种形式的生存时间。并非所有会话存储都支持事件,因此一般无法进行通知。

    但是,您可以尝试使用 setTimeout() 执行您自己的检查 - 当超时时检查会话的到期日期是否足够接近现在并执行您需要做的任何事情。

    【讨论】:

    • 感谢您的回复,我正在使用连接会话。我想过setTimeout(),但可能会增加CPU开销……我想如果没有办法,我最终会使用setTimeout()……谢谢
    • @Chun 它不应该过多地增加 CPU 开销。只需将超时设置为会话的预期生存时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2012-09-23
    • 2014-01-22
    相关资源
    最近更新 更多