2016-07-16 67 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內存存儲的問題。這可能是因爲我的託管服務器沒有在內存中保留會話,或者在使用內存存儲時,這可能是快速會話本身的問題。當新的代碼工作時,很難花時間在你的舊代碼上:) –

相關問題