Tengo el siguiente código para autenticar a través de la estrategia de pasaporte local:
routes.post("/login", passport.authenticate("local"), (req, res) => { res.json(req.user); }); function ensureAuth(req, res, next) { console.log(req.isAuthenticated()); if (req.isAuthenticated()) { next(); } else { req.flash("info", "You must be logged in to see this page"); res.redirect("/login"); } } routes.get("/edit", ensureAuth, (req, res) => { res.sendStatus(200); }); routes.post("/edit", ensureAuth, (req, res, next) => { req.user.username = req.body.username; req.user.bio = req.body.bio; req.user.email = req.body.email; req.user.save((err) => { if (err) { return next(err); } else { res.send({ success: "true", info: "Profile updated", }); } }); });No puedo entender por qué sucede esto? ¿Por qué no se autentica?
No puedo ver la configuración local de su pasaporte y le envío una muestra para la autenticación local por pasaporte local. Espero ayudarlo :) ruta de inicio de sesión:
router.post('/login', loginController.process); controlador loginController.process :
async process(req, res, next) { try { passport.authenticate('local.login', async (err, user) => { // User not Exist if (!user) return this.back(req, res); req.logIn(user, (err) => { if (req.body.remember) { user.setRememberToken(res); } return res.redirect('/'); }); })(req, res, next); } catch (e) { next(e); } } }configuración de pasaporte:
passport.use('local.login', new localStrategy({ usernameField: 'email', passwordField: 'password', passReqToCallback: true, }, async (req, email: string, password: string, done) => { // Select User Where email const user = await userService.findOne({email}); // Check user Exist or Incorrect Password if (!user || !user.comparePassword(password)) return done(req.flash('global_error', req.__('typeScript.app.passport.passport-local.wrong')), null); done(null, user); }));