Was macht die passus.session () Middleware?
Baue ich ein system-Authentifizierung verwenden Passport.js mit dieses tutorial.
Ich bin verwirrt über was für einen Reisepass.session ().
Nach Herumspielen mit den verschiedenen middleware-ich kam zu verstehen, dass express.session() ist, was sendet einen session-ID über cookies an den client, aber ich bin verwirrt über was für einen Reisepass.session() tut und warum es erforderlich ist, zusätzlich zu äußern.session().
Hier ist, wie ich meine Anwendung:
//Server.js konfiguriert die Anwendung und richtet den webserver
//importing our modules
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var configDB = require('./config/database.js');
//Configuration of Databse and App
mongoose.connect(configDB.url); //connect to our database
require('./config/passport')(passport); //pass passport for configuration
app.configure(function() {
//set up our express application
app.use(express.logger('dev')); //log every request to the console
app.use(express.cookieParser()); //read cookies (needed for auth)
app.use(express.bodyParser()); //get info from html forms
app.set('view engine', 'ejs'); //set up ejs for templating
//configuration for passport
app.use(express.session({ secret: 'olhosvermelhoseasenhaclassica', maxAge:null })); //session secret
app.use(passport.initialize());
app.use(passport.session()); //persistent login session
app.use(flash()); //use connect-flash for flash messages stored in session
});
//Set up routes
require('./app/routes.js')(app, passport);
//launch
app.listen(port);
console.log("Server listening on port" + port);
InformationsquelleAutor der Frage Georges Krinker | 2014-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
passport.session()
fungiert als middleware zu verändern, die die req-Objekt, und ändern Sie die 'user' - Wert, der derzeit die session-id (aus der client-cookie"), in die wahre user-Objekt deserialisiert.Während die anderen Antworten machen Sie einige gute Punkte, die ich dachte, einige weitere spezifische Details bereitgestellt werden könnten.
entspricht
Wo 'Sitzung' bezieht sich auf die folgenden Strategie, der zusammen mit passportJS.
https://github.com/jaredhanson/passport/blob/master/lib/strategies/session.js
Speziell nach Zeilen 59-60:
Wo es im wesentlichen fungiert als middleware und ändert den Wert von 'user' - Eigenschaft in dem req-Objekt enthalten, die deserialisiert Identität des Benutzers. Damit dies korrekt funktioniert, müssen Sie
serializeUser
unddeserializeUser
Funktionen in Ihren benutzerdefinierten code.So finden Sie den richtigen Benutzer aus der Datenbank und übergeben Sie es als eine closure-variable in der callback -
done(err,user);
so dass der obige code in derpassport.session()
ersetzen kann der 'user' - Wert in dem req-Objekt und übergeben Sie an die nächste middleware in den Haufen.InformationsquelleAutor der Antwort lindsaymacvean
Während Sie mit
PassportJs
für die Validierung der Benutzer als Teil Ihrer login-URL, die Sie noch benötigen einen Mechanismus, der zum speichern dieser Informationen für den Benutzer in der Sitzung und rufen es mit jeder weiteren Anforderung (d.h. serialisieren/Deserialisieren der Benutzer).Also in der Tat, Sie sind die Authentifizierung des Benutzers mit jeder Anfrage, auch wenn diese Authentifizierung muss nicht schauen, eine Datenbank oder oauth als in die login Antwort. Also Pass wird in der Behandlung von session-Authentifizierung, auch als weiteres Authentifizierungs-Strategie.
Dieser Strategie - mit dem Namen
session
benutzen Sie einfach eine einfache Abkürzung -app.use(passport.session())
. Beachten Sie auch, dass diese Besondere Strategie wollen Sie implementieren, serialisieren und Deserialisieren von Funktionen aus offensichtlichen Gründen.InformationsquelleAutor der Antwort uniwalker
Aus der Dokumentation
und
und
InformationsquelleAutor der Antwort Josh C.
Es einfach authentifiziert die Sitzung (die ist bevölkert von
express.session()
). Es ist äquivalent zu:wie gesehen werden kann in dem code hier:
https://github.com/jaredhanson/passport/blob/master/lib/authenticator.js#L236
InformationsquelleAutor der Antwort Jared Hanson