如何在node.js express中从控制器传递多个参数
我正在使用Passport,我需要将多个参数从控制器传递到路由器。基本上它只通过第一个 我想去如何在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
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