conoscere l’autenticazione migliore con Passport / JwtStrategy

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 ?

  1. Va bene. In entrambi i casi, tuttavia, verrà restituito un valore undefined .
  2. Il middleware viene eseguito nell’ordine in cui sono definiti. Quindi 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à.