In un progetto di lavoro che ho scaricato da internet …
In una posizione del codice ho il seguente:
passport.use(new JwtStrategy({ secretOrKey: credentials.secret, jwtFromRequest: ExtractJwt.fromAuthHeader(), }, function(payload, done) { User.findById( payload._id, function(err, user) { if (err) { return done(err, false); } if (user) { return done(null, user); } else { return done(null, false); } } ); } ));
In un’altra posizione del codice ho il seguente:
var requireAuth = passport.authenticate('jwt', { session: false }); //... module.exports = function(app) { //... authRoutes.get('/protected', requireAuth, function(req, res) { res.send({ content: 'Success' }); }); //... }
Ho 2 domande qui:
1- Che dire se invece si faccia: return done(err, false);
facciamo: done(err, false);
senza return
?
2- Il terzo argomento (quella funzione middleware) nella chiamata di: authRoutes.get(*, *, *)
sempre raggiunto indipendentemente da ciò che accade all’interno della funzione: function(payload, done){}
(secondo argomento su: new JwtStrategy(*, *)
? Si noti che la funzione middleware (quel terzo argomento) restituisce una risposta Success
. Che cosa succede se qualcosa va storto all’interno del processo di autenticazione JWT
?
undefined
. requireAuth
eseguirà sempre prima e poi la function(req, res){}
. Ma se requireAuth
fallisce per qualsiasi motivo, la function(req, res){}
verrà saltata nello stack middleware. Eventuali errori devono essere gestiti nel middleware di errore . Se non li gestisci, l’intera applicazione si bloccherà.