好吧我有一段代码使用护照登录。现在基于不同的Linux发行版,我想以不同的方式做到这一点。
function loginDispatch(osType) {
if(osType == "sles") {
passport.authenticate('myWorkingAuth');
}
else if(osType == "ubuntu") {
passport.authenticate('local');
}
else {
console.log("error");
}
}
app.post('/login', loginDispatch(osInfo), function (req, res, next) {
next();
}, function(req, res) {
logger.trace('login called with user = ' + req.user.name);
//save the user in our session
req.session.user = req.user;
// ..............
res.send(req.session.user);
});
但它在Ubuntu中出现了这样的错误: 错误:Route.post()需要回调函数但得到[object Undefined]
请问如何解决?谢谢!
答案 0 :(得分:1)
您正在将loginDispatch的结果作为中间件传递。因此loginDispatch需要返回一个函数。修改您的功能以返回适当的护照中间件:
if(osType == "sles") {
return passport.authenticate('myWorkingAuth');
}
else if(osType == "ubuntu") {
return passport.authenticate('local');
}
else {
console.log("error");
}
顺便说一下,你可能想要更有力地处理最终的else
,但我假设这是测试代码并且你知道:)