nodejs - heroku - express-sessions

时间:2018-02-24 18:07:01

标签: node.js heroku express-session

我使用expressjs在nodejs中构建一个网站,并且我使用快速会话来处理用户会话。这是我的代码。

在应用程序启动的app.js文件中。

app.use(express.static(path.join(__dirname, 'public')));
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(cors());

app.use(session(config.sessionConfig));

app.use(override());

config.sessionConfig对象在这里

  sessionConfig : {
    secret: 'shhSecrt',
    store: new MongoStore({ url:dbUrl+dbName}),
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true }
  }

问题在于,当我将它部署到heroku时,req.session变量似乎并没有保持其状态。 更具体地说,当用户在req.session.usernname变量中注册i存储例如他的用户名时,但是在用户执行的下一个请求中,req.session.username是未定义的,不是因为它没有存储在db中,但是因为服务器无法识别他的会话! 我不知道为什么,我试图解决它2天,我无法弄清楚。此外,当我在localhost中运行应用程序一切正常。 请帮忙!! 谢谢!

*如果您需要更多信息或代码示例,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,以下是我需要的修复程序。也许你的与你相似:

https://github.com/expressjs/session/issues/633

该解决方案引用了文档中的关键信息: enter image description here

将信任代理设置为高并保护cookie可以使cookie在Heroku上持久存在。