ok, tenía un código haciendo login usando el pasaporte Ahora basado en una distribución de Linux diferente, quiero hacerlo de manera diferente.
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);
});
Pero da tal error en Ubuntu: Error: Route.post () requiere funciones de devolución de llamada pero obtuvo un [objeto Indefinido]
¿Cómo arreglarlo por favor? Gracias !
Respuestas
1 para la respuesta № 1Estas pasando el resultado de loginDispatch como middleware. loginDispatch, por lo tanto, necesita devolver una función. Modifique su función para devolver el middleware de pasaporte apropiado:
if(osType == "sles") {
return passport.authenticate("myWorkingAuth");
}
else if(osType == "ubuntu") {
return passport.authenticate("local");
}
else {
console.log("error");
}
Como comentario aparte, probablemente quieras manejar la final else
un poco más robusto, pero supongo que este es el código de prueba y lo sabes :)