如何在不重新启动应用程序的情况下清除所有用户的快速会话?

时间:2017-06-06 13:11:27

标签: javascript node.js session express storage

我正在使用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:为什么到期时间不符合上述代码?

我做错了吗?

请帮忙

提前致谢

1 个答案:

答案 0 :(得分:1)

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

如果你想破坏用户会话,你可以使用这样的思考:

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

希望它有所帮助!