2016-07-16 7 views
0

Express-Sitzung erstellt eine neue Sitzung (neue SessionID) für neue Anfrage. Und es passiert intermittierend, zum Beispiel manchmal für die ersten 3-4 Hits wird es gut funktionieren und behalten Sie die gleiche existierende Sitzung und am vierten Treffer wird es eine neue erstellen, Manchmal wird es neue Sitzung auf erste Anfrage selbst erstellen.Express erstellen neue Sitzung für jede Anfrage

Auch diese Ausgabe kommt auf meiner gehosteten Website. Es funktioniert gut auf localhost.

Dinge, die ich bereits versucht haben und arbeiten nicht ..

  1. Express-Sitzung wird nach statischen Datei Routen erstellt.
  2. Express Session Secret und CookieParser Secret werden auf denselben Wert gesetzt.
  3. Verwendung app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); für Favicon.
  4. Einstellung sehr hoher Wert für Max-Alter-Feld beim Erstellen von Cookies.

Unten ist mein app.js Snippet -

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()); 

Jede Art von Hilfe geschätzt sehr würde. Vielen Dank.

Antwort

0

Warum verwenden Sie MongoStore nicht zum Speichern von Sitzungsdaten? Vielleicht wird das dein Problem lösen.

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

Ja, ich habe den Code zu MongoStore ersetzt und die Dinge funktionieren. Aber ich bin immer noch nicht in der Lage herauszufinden, was das Problem mit dem OOTB-Speicher verursacht hat. Könnte es sein, weil mein Hosting-Server keine Sitzung im Speicher persistent ist, oder dies könnte ein Problem in Express-Sitzung selbst sein, wenn mit Speicher verwenden. Es ist so schwierig, Zeit mit deinem alten Code zu verbringen, wenn der neue funktioniert :) –