2014-11-19 13 views
9

Kann Expresssitzung und Passportsitzungskonflikt in einer Express-App auftreten? Warum oder warum nicht?Expresssitzung vs. PassportJS-Sitzung

Hier ist ein Code, der Objekte Express und Pass Sitzung unterscheidet:

app.use(express.session({})); 
    app.use(passport.session()); 

    app.use(session({ 
     cookie : { 
      maxAge : 60000 
     } 
    })); 

Antwort

14

Nein, sie sind zwei getrennte Dinge und sie nicht miteinander kollidieren welche anderen. Darüber hinaus muss passport.session nach express.session verwendet werden, um ordnungsgemäß zu funktionieren.

express.session Middleware wird verwendet, um Benutzersitzung von einem Datenspeicher (wie Redis) abzurufen. Wir können das Sitzungsobjekt finden, da die Sitzungs-ID im Cookie gespeichert ist, der dem Server bei jeder Anfrage bereitgestellt wird.

Dann ist der Zweck von passport.session Middleware Deserialisieren Benutzerobjekt von Sitzung mit passport.deserializeUser Funktion (die Sie in Ihrem Passport-Konfiguration definieren). Wenn sich der Benutzer zuerst authentifiziert, wird sein Benutzerobjekt serialisiert und in der Sitzung gespeichert. Bei jeder folgenden Anforderung deserialisiert die Middleware den Benutzer und füllt das Objekt req.user.

Überprüfen Sie Passpot Configure Guide und diese SO-Antwort: What does passport.session() middleware do? für weitere Informationen.

Verwandte Themen