我弄清楚了,尽管我不喜欢这个答案。
tl; dr; -使用maxAge而不是过期。
问题的根源是在每个cookie上设置的到期日期(由Express自动设置)。我注意到,每个设置的cookie都具有相同的到期日期,最终该到期日期是过去的日期,因此立即到期。
原因在这里:
cookie: { expires : new Date(Date.now() + 3600000) }服务器启动后,仅创建一次新的日期。这导致到期时间每次都相同。根据原始帖子中的代码,我无法弄清楚为什么它不起作用,但是我在网上找到的每个示例都使用完全相同的代码。我通过定义一个创建此Date的函数并检查它是否仅在服务器启动时被调用来验证这一点。
为了解决此问题,我定义了maxAge而不是“ expires”。maxAge需要花费毫秒数而不是日期,并且似乎正确设置了所有cookie的到期日期。
我很想听听是否有人可以一开始就解释为什么会这样,因为其他人似乎已经成功地使用了它。 有什么想法吗?
请参阅下面的工作代码
app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.engine('html', consolidate.swig); app.set('view engine', 'html'); swig.init({ root: '.', allowErrors: true, // allows errors to be thrown and caught by express instead of suppressed autoescape: false}); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser("[mysecrethere]")); app.use(express.session({ store: sessionStore, cookie: { maxAge : 3600000 } //1 Hour })); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); app.use(expressValidator); app.use(express.static(path.join(__dirname, 'public'))); //Dynamic helpers app.use(require('./helpers/DynamicHelpers')); app.use(app.router);});


