/ / Nemožno prenášať dáta z middleware na ďalší middleware v ExpressJS pomocou passport.athenticate () - node.js, express, passport.js

Nie je možné prenášať údaje z middleware na ďalší middleware v ExpressJS pomocou passport.athenticate () - node.js, express, passport.js

js a Passport.js. Takže mám toto:

router.post("/login", middleware1, middleware2);

Mám to tiež na mojom 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.
}
));

A tu je moje 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

}

Teraz. Ako môžem prejsť user object z vnútra passport.authenticate() na middleware2, Myslím na použitie promise niečo také passport.authenticate().then() ale neviem syntax. Prosím pomôžte. Vďaka.

odpovede:

0 pre odpoveď č. 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);
});

autentifikácia funkcie () je štandardný Pripojte middleware, ktorý je vhodný na použitie ako middleware

Prečo balíte passport.authenticate () v inej funkcii?

Nie som si istý, čo sa pokúšate robiť, ale pravdepodobne by som začal bez toho, aby ste sa pokúsili o to,

router.post("/login", passport.authenticate("local"), middleware2(req,res,next));

function middleware2(req,res,next) {
console.log("user ", req.user);
}

Ak chcete, aby objekt req prešiel na vašu funkciu, nastavte možnosti passport js "passReqToCallback: true"