【问题标题】:How can I clear express session for all users without restarting the application?如何在不重新启动应用程序的情况下清除所有用户的快速会话?
【发布时间】:2017-06-06 13:11:26
【问题描述】:

我正在使用 nodejs express 框架开发 REST 服务,并将用户特定的数据保存在会话中,用户的 id 作为识别用户数据的关键。

这是我用来存储用户特定数据的代码:

let session = require("express-session");
let FileStore = require("session-file-store")(session);

//For setting up the data into session
session[userId]={name:xyz, age:22}

//For getting the data
session[userId]

我还为会话配置了过期时间,它必须清除所有会话值。

  webserver.use(session({
        cookie: {
            maxAge: 60 * 1000 // 24 hours
            // maxAge: 24 * 60 * 60 * 1000 // 24 hours
        },
        key: "sid",
        resave: false,
        saveUninitialized: false,
        secret: "keyboard cat",
        store: new FileStore(storageOptions),
    }));`

但会话值似乎在超过过期时间后仍然存在。虽然这些是休息服务,并且不涉及任何 cookie,但我使用的是用户 ID。

根据我的理解,这个会话应该在超过过期时间后被清除,但事实并非如此。

问题 1:如何在不重新启动服务器的情况下随时清除完整的会话值? 问题 2:为什么到期时间不能按照上面的代码工作?

我是不是做错了什么?

请帮忙

提前致谢

【问题讨论】:

    标签: javascript node.js session express storage


    【解决方案1】:

    我认为 cookie.maxAge 用于定义不活动时间。因此会话将在 24 小时不活动后被销毁。

    如果你想破坏用户会话,你可以像这样使用 somethink :

    req.session.destroy(function (err) {
      if (err) {
        // Handle error
      }
      else {
        // Session destroyed !
      }
    });
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2013-04-08
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多