【问题标题】:Session lifetime in node.js with express and MongoDB使用 express 和 MongoDB 在 node.js 中的会话生命周期
【发布时间】:2013-12-18 20:17:45
【问题描述】:

我将 node.js 与 express 框架一起使用。作为会话存储,我使用的是 MongoDB。如何设置从 MongoDB 中删除会话对象的生命周期。这就是我做声明的方式:

app.use(express.cookieParser());
    app.use(express.session({
                secret: "Stays my secret",
                store: new MongoStore({ db: 'myDB' })
                    }));

【问题讨论】:

    标签: session mongodb node.js express lifetime


    【解决方案1】:

    您的问题有点含糊,但据我所知,您不想设置会话的有效期:

    你可以像这样使用maxAge

    app.use(express.cookieParser());
    app.use(express.session({
        secret  : "Stays my secret",
        maxAge  : new Date(Date.now() + 3600000), //1 Hour
        expires : new Date(Date.now() + 3600000), //1 Hour
        store   : new MongoStore({ db: 'myDB' })
    }));
    

    expires 值对于新版本的 express 是必需的,而 maxAge 对于旧版本是必需的,但您应该只需要 expires

    【讨论】:

    • 谢谢。 maxAge 的计时器是在每次使用会话时重置还是从会话创建开始计数?
    • 基于stackoverflow.com/questions/10429557/…,您的日期使用设置似乎需要“expires”键,而不是“maxAge”。
    • maxAge 应该是 age(例如,以毫秒为单位的值)而不是未来的 时间
    • @UpTheCreek 我相信单位是秒而不是毫秒......有人可以确认吗?
    • @RoberPitt,这里有什么 MongoStroe 的用途以及会话超时后如何从数据库中删除它?你能解释一下吗
    【解决方案2】:

    @RobertPitt 编辑你的答案。 Cookie(会话)对象如下所示:

    {
     "cookie":"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},
     "your_var_1":"value 1",
     "your_var_2":"value 2",
     ...
    }
    

    express.session 的参数应该如下所示(在文档中):

    app.use(express.session({
        secret  : "Stays my secret",
        cookie: {
            maxAge  : new Date(Date.now() + 3600000), //1 Hour
            expires : new Date(Date.now() + 3600000), //1 Hour
        },
        store   : new MongoStore({ db: 'myDB' })
    }));
    

    此外:

    maxAge  : new Date(Date.now() + 3600000), //1 Hour
    

    将导致每个 cookie(这里也是会话)将在服务器启动一小时后自动过期

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-04
      • 2011-08-21
      • 2016-11-21
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      • 1970-01-01
      相关资源
      最近更新 更多