如何在node.js express中从控制器传递多个参数

如何在node.js express中从控制器传递多个参数,node.js,express,passport.js,Node.js,Express,Passport.js,我正在使用Passport,我需要将多个参数从控制器传递到路由器。基本上它只通过第一个 我想去 app.get('/auth/steam', controllers.auth.authenticate); 导致 app.get('/auth/steam', passport.authenticate('steam'), function(req, res) { res.render('index') };); 现在它只加载第一个参数 我的控制器看起来像这样 exports.authentic

我正在使用Passport,我需要将多个参数从控制器传递到路由器。基本上它只通过第一个

我想去

app.get('/auth/steam', controllers.auth.authenticate);
导致

app.get('/auth/steam', passport.authenticate('steam'), function(req, res) { res.render('index') };);
现在它只加载第一个参数

我的控制器看起来像这样

exports.authenticate =
  passport.authenticate('steam'),
  function(req, res) {
    res.render('index');
  };
我该怎么做


编辑:我希望只能使用控制器.auth.authenticate调用它,而不能在类似于:控制器.auth.authenticate[0]的数组中调用它

警告未测试

您可以在函数中包装所有内容

exports.authenticate = function(req, res, next) {
  passport.authenticate('steam', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/auth/steam'); }

    res.render("index");
  });
}
或者,您可以使用路由器保护所有动词(get、post等)

并在应用程序上使用路由器

var ctrl = require("yourModuleName");
app.use('/auth/steam', ctrl); // app.use NOT app.get
另一种选择是只保护
get

var express = require('express');
var router = express.Router();

router.get('/', passport.authenticate('steam'), function(req, res, next) {
  res.render("index");
});

module.exports = router;

var ctrl = require("yourModuleName");
app.use('/auth/steam', ctrl); // app.use NOT app.get
参见第页

var express = require('express');
var router = express.Router();

router.get('/', passport.authenticate('steam'), function(req, res, next) {
  res.render("index");
});

module.exports = router;

var ctrl = require("yourModuleName");
app.use('/auth/steam', ctrl); // app.use NOT app.get