Bonjour à tous,
Je débute en Node et je me suis intéressé au module "passport" pour gérer les sessions utilisateurs.
J'ai trouvé ce tuto: https://blog.risingstack.com/node-he...n-passport-js/
Le code complet qui illustre le tuto est là: https://github.com/RisingStack/nodehero-authentication
J'en viens à mon problème: je ne comprend pas comment l'auteur configure passport.
fichier app.js, on trouve:
ensuite dans le module "authentication":
Code : Sélectionner tout - Visualiser dans une fenêtre à part require('./authentication').init(app)
enfin, dans passport.js:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 module.exports = { init: require('./init'), middleware: require('./middleware') }
Autrement dit, à aucun moment on ne passe la variable "passport" au module de conf de passport ci dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 const passport = require('passport') const LocalStrategy = require('passport-local').Strategy const authenticationMiddleware = require('./middleware') const user = { username: 'test-user', password: 'test-password', id: 1 } function findUser (username, callback) { if (username === user.username) { console.log("utilisateur trouve"); return callback(null, user) } return callback(null) } passport.serializeUser(function (user, cb) { cb(null, user.username) }) passport.deserializeUser(function (username, cb) { findUser(username, cb) }) function initPassport () { passport.use(new LocalStrategy( function(username, password, done) { findUser(username, function (err, user) { if (err) { return done(err) } if (!user) { console.log("utilisateur introuvable"); return done(null, false) } if (password !== user.password ) { console.log("mauvais psd"); return done(null, false) } console.log("c'est tout bon, on est logge"); return done(null, user) }) } )) passport.authenticationMiddleware = authenticationMiddleware } module.exports = initPassport
A aucun moment on ne retourne ce passport au fichier principal de l'app.
Il semble qu'en le configurant à un endroit à part, le module "passport" soit dans le contexte global initialisé et configuré.
Quelqu'un peut m'expliquer pourquoi ?
PS:
instinctivement, moi j'aurai plutôt écrit une fonction qui prend en paramètre un "passport" puis le configure.
Voir, un module qui configure un passport puis l'expose avec export...
Merci d'avance :-)
Partager