Je construis un système d'authentification à l'aide de Passport.js à l'aide de l' authentification facile des nœuds: installation et tutoriel local .
Je ne sais pas ce que passport.session()
ça fait.
Après avoir joué avec les différents middleware, j'ai compris que express.session()
c'est ce qui envoie un identifiant de session via les cookies au client, mais je ne sais pas trop ce que passport.session()
fait et pourquoi il est nécessaire en plus express.session()
.
Voici comment je configure mon application:
// Server.js configure l'application et configure le serveur Web
//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);
la source
De la documentation
et
et
la source
app.post('/login', passport.authenticate('local'), ...
Bien que vous utilisiez
PassportJs
pour valider l'utilisateur dans le cadre de votre URL de connexion, vous avez toujours besoin d'un mécanisme pour stocker ces informations utilisateur dans la session et les récupérer à chaque demande ultérieure (c'est-à-dire sérialiser / désérialiser l'utilisateur).Donc, en fait, vous authentifiez l'utilisateur à chaque demande, même si cette authentification n'a pas besoin de rechercher une base de données ou un oauth comme dans la réponse de connexion. Le passeport traitera donc l'authentification de session comme une autre stratégie d'authentification.
Et pour utiliser cette stratégie - qui est nommée
session
, il suffit d'utiliser un simple raccourci -app.use(passport.session())
. Notez également que cette stratégie particulière voudra que vous implémentiez des fonctions de sérialisation et de désérialisation pour des raisons évidentes.la source
Il authentifie simplement la session (qui est remplie par
express.session()
). C'est équivalent à:comme on peut le voir dans le code ici:
https://github.com/jaredhanson/passport/blob/42ff63c/lib/authenticator.js#L233
la source