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"