Acabo de empezar a aprender express. Estoy agregando autenticación básica usando el pasaporte js. He seguido esta documentación . Está funcionando un poco extraño en los mensajes de error. Cuando el nombre de usuario es correcto y la contraseña es incorrecta, no agrega ningún mensaje a la sesión. Solo tiene información básica como la ruta.
app.post("/login",(req,res)=>{ const user = new User({ username:req.body.username, password:req.body.password }); console.log(req.session); req.login(user,function(err){ if(err){ console.log(err); } else{ passport.authenticate("local",{ failureRedirect: '/login', failureMessage: true })(req,res,function(){ res.redirect("/secrets"); }); } }); });Cuando el nombre de usuario es incorrecto, agrega un mensaje a la sesión pero no se recarga correctamente. no se recarga en absoluto a "/login". Tengo que matar literalmente el proceso y luego se agregan los datos de esta sesión.
No parece funcionar en absoluto. Por favor, ayúdenme a tratar ambos errores, es decir, nombre de usuario correcto, contraseña incorrecta y nombre de usuario incorrecto, contraseña incorrecta.
No creo que uses esa función req.login correctamente.
Creo que no entiendes bien el inicio de login y authentication .
Lo que está pensando es if login fail then authenticate again mientras que, en realidad, authenticate user first, then login after
Así que el flujo, paso a paso será:
authenticationenter tu sistema. Esto se llama inicio de login Aquí está el documento que puede seguir para comprender cómo funciona el pasaporte.
https://www.passportjs.org/concepts/authentication/downloads/html/ (Como es nuevo en expresarse, asegúrese de comprender completamente la sección General ; el Middleware y la Strategy son conceptos clave)
https://www.passportjs.org/tutorials/password/ (esta es una versión práctica del documento anterior)