重新启动服务器时,Express 4会话不会持续存在

时间:2014-04-24 05:42:16

标签: node.js session express session-cookies

我有一个Express 4应用程序设置来进行会话。

// Sessions
app.use(cookieParser());
app.use(session({ secret: "some-secret" }));

// Signup
app.post("/signup", function (req, res) {
    create_user(req.body.user, function (err, user_id) {
        req.session.user_id = user_id;
        res.redirect("/admin");
    });
});

当我提交表单时,它会将user_id保存到req.session。但是,当我重新启动服务器时,会话就消失了。

为什么它不持久?我错过了一些配置吗?

2 个答案:

答案 0 :(得分:46)

快速会话的默认会话存储是MemoryStore,顾名思义,它仅将会话存储在内存中。如果您需要持久性,Express可以使用许多会话存储。一些例子:

答案 1 :(得分:0)

@mscdex答案很好,但是如果您正在寻找代码示例。这是带有connect-mongo的一个,如果您使用mongodb和mongoose,它应该可以正常工作。

安装软件包:

npm i connect-mongo

需要包装:

const session = require('express-session'); // You must have express-sessions installed
const MongoStore = require('connect-mongo')(session)

现在配置会话:

app.use(
  session({
    secret: "mysecrets",
    resave: false,
    saveUninitialized: false,
    store: new MongoStore({ 
      mongooseConnection: mongoose.connection,
      ttl: 14 * 24 * 60 * 60
     }),

  })
);

再次假设您使用猫鼬并配置了连接。

如果您做对了所有事情,它应该可以正常工作。