2014-12-07 6 views
6

Dal momento che da Express 4 non si dovrebbe fareCome passare l'oggetto passaporto configurato nei moduli di instradamento in Express4?

require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport 

module.exports = function(app, passport) { 
    // ===================================== 
    // FACEBOOK ROUTES ===================== 
    // ===================================== 
    // route for facebook authentication and login 

    app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' })); 

    // handle the callback after facebook has authenticated the user 
    app.get('/auth/facebook/callback', 
     passport.authenticate('facebook', { 
      successRedirect : '/profile', 
      failureRedirect : '/' 
     })); 

    // route for logging out 
    app.get('/logout', function(req, res) { 
     req.logout(); 
     res.redirect('/'); 
    }); 
}; 

Invece, si suppone di utilizzare la funzione express.Route() e

var routes = require('./app/routes.js'); 
app.use('/', routes); 

Come passare il passaporto configurato nei moduli Itinerari Express 4?

risposta

7

L'esportazione function può ancora essere utilizzata per passare il riferimento passport tra i moduli. Sarebbe solo creare e return a Router anziché modificare direttamente lo app.

var express = require('express'); 

module.exports = function(passport) { 
    var router = express.Router(); 

    router.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' })); 

    // etc. 

    return router; 
}; 

E, il app può quindi use con:

var routes = require('./app/routes.js')(passport); 
app.use('/', routes); 
+0

grande risposta! grazie molto! – bolerovt

+0

ma quando ho provato l'implementazione di cui sopra, ho appena avuto un nuovo problema: Impossibile ottenere/auth/facebook/callback? Code = ************** e non ci sono informazioni di errore. Come posso affrontare questo? – bolerovt

+0

@bolerovt Ho ritagliato alcune delle rotte dal mio post per farla breve, sostituita con '// ecc. 'Hai copiato quella riga o hai il' router' con ''/auth/facebook/callback'' e rotte ''/ logout''? –