如何将配置的护照对象传递到Express4中的路由模块?

bol*_*ovt 6 node.js express-4 passport.js

从快递4开始,你不应该这样做

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('/');
    });
};
Run Code Online (Sandbox Code Playgroud)

相反,你应该使用express.Route()函数和

var routes = require('./app/routes.js');
app.use('/', routes);
Run Code Online (Sandbox Code Playgroud)

如何将配置的护照传递到Express 4中的路由模块?

Jon*_*ski 7

function出口仍然可以用于传递passport的模块之间的参考.它只是创建和return一个Router而不是修改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;
};
Run Code Online (Sandbox Code Playgroud)

并且,app然后use它可以:

var routes = require('./app/routes.js')(passport);
app.use('/', routes);
Run Code Online (Sandbox Code Playgroud)