js e Passport.js. Quindi ho questo:
router.post("/login", middleware1, middleware2);
Anch'io ho questo sul mio app.js
passport.use(new passportLocal(
{ usernameField: "email" },
function(email, password, done) {
// working logic here
// this returns a user object
// to the middleware1 if query is ok
// returns error otherwise.
}
));
E qui sono i miei middlewares
middleware1 = function (req, res, next) {
passport.authenticate("local", function(error, user, message){
// How do I get the "user" object and pass it
// to the outer req or res?
req.user = user; // <- is this ok?
})(req, res, next);
req.user = user;
next();
}
middleware2 = function (req, res, next) {
console.log("user ", req.user); // <- this will obviously print null or undefined
}
Adesso. Come faccio a passare il user object
dall'interno del passport.authenticate()
a middleware2
. Sto pensando di usare promise
qualcosa come questo passport.authenticate().then()
ma non conosco la sintassi. Per favore aiuto. Grazie.
risposte:
0 per risposta № 1 app.post("/login",
passport.authenticate("local"),
function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect("/users/" + req.user.username);
});
authenticate () La firma della funzione s è il middleware Connect standard, che lo rende comodo da utilizzare come middleware di route
Perché stai avvolgendo il passport.authenticate () in un'altra funzione?
Non sono sicuro di cosa stai provando a fare, ma probabilmente inizierei senza la deviazione
router.post("/login", passport.authenticate("local"), middleware2(req,res,next));
function middleware2(req,res,next) {
console.log("user ", req.user);
}
Se vuoi che l'oggetto req sia passato alla tua funzione imposta le opzioni del passport js "passReqToCallback: true"