每次重新加载会话都会重置NodeJS /将创建一个新会话

时间:2017-04-30 21:40:58

标签: node.js session express-session

整天我都有同样的错误。每次重新加载页面时,都会创建一个新会话。顺便说一句:我是NodeJS初学者,我的英语不是最好的。



var express = require('express');
var session = require('express-session');
var fileStore = require('session-file-store')(session);
var cookieParser = require('cookie-parser');
var app = express();

app.use(cookieParser('testing'));

app.use(session({
  name: 'Session',
  secret: 'testing',
  saveUninitialized: false,
  resave: true,
  cookie: { 
    maxAge: 60000,
    httpOnly: true,
    secure: true
  },
  store: new fileStore({
    path: './tmp/sessions/',
    useAsync: true,
    reapInterval: 5000,
    maxAge: 10000
  })
}));

app.get('/', function(req, res) {
  if(res.session) {
    req.session.t++;
    console.log(req.session.t);
  } else {
    req.session.t = 1;
    req.session.save();
    console.log(req.session.t);
  }
  res.sendFile(__dirname + 'index.html');
});




最诚挚的问候,

海森堡

1 个答案:

答案 0 :(得分:0)

您如何注意创建新会话?因为if(res.session)从未被执行过? 注意你正在检查res.session - 我想你的意思是req.session,这是一个区别。 res.session将始终未定义,这可能是您认为会话为空的原因。另外,请注意,在当前代码中,如果您尝试

,则会引发错误
req.session.t = 1;
req.session.save();

因为您尝试访问未定义的对象req.session。