2016-07-16 63 views
0

快速会话正在为新请求创建新会话(新会话ID)。它会间歇性地发生,例如有时候首先会有3-4次命中,它会正常工作并继续使用相同的现有会话,并在第四次命中时创建一个新的会话,有时会在首次请求时创建新会话。为每个请求快速创建新会话

此问题也出现在我的托管网站上。它在localhost上正常工作。我已经试过和不工作

东西..

  1. Express会话的静态路由文件后创建。
  2. 快速会话密码和cookieParser密码设置为相同。
  3. 使用app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));作为favicon。
  4. 在创建cookie时为max-age字段设置非常高的值。

下面是我的app.js片段 -

var passport = require('passport'); 
var expressSession = require('express-session'); 
var app = express(); 
app.engine('hbs', hbs.express4({ 
    partialsDir: __dirname + '/views/partials' 
})); 
app.set('view engine', 'hbs'); 
app.set('views', path.join(__dirname, 'views')); 
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(express.static(path.join(__dirname, 'public'))); 
var flash = require('connect-flash'); 
app.use(flash()); 

var initPassport = require('./passport/init'); 
initPassport(passport); 
//app.use(bodyParser.urlencoded()); 
app.use(cookieParser('mysecret')); 
app.use(expressSession({ secret: 'mysecret', name:'user', cookie: {maxAge: 60000000}})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

任何形式的帮助将不胜感激。谢谢。

回答

0

为什么不使用MongoStore存储会话数据?可能会解决你的问题。

app.use(session({ 
    secret: 'mysecret', 
    resave: false, 
    saveUninitialized: false, 
    expires: new Date(Date.now() + (60 * 60 * 24 * 7 * 1000)), 
    cookie: { } , 
    store: new MongoStore({mongooseConnection: mongoose.connection}) 
})); 
+0

是的我更换了代码到MongoStore和东西都在工作。但我仍然无法找出OOTB内存存储的问题。这可能是因为我的托管服务器没有在内存中保留会话,或者在使用内存存储时,这可能是快速会话本身的问题。当新的代码工作时,很难花时间在你的旧代码上:) –

相关问题