Estoy intentando usar un middleware authenticateUser() antes de cargar todas mis páginas. En lugar de incluirlo en cada llamada (como en app.get ('/', authenticateUser, function() ...)), intenté configurarlo con app.use (authenticateUser) justo antes de llamar a app.use (app.router))Node.js - Problema con res.redirect en middleware
Esto no funcionó, sin embargo. authenticateUser es básicamente:
if (req.session.loginFailed) {
next()
else {
if (req.session.user_id) {
...
if (userAuthenticated) {
next();
} else {
req.session.loginFailed = true;
console.log('setting loginFailed to true');
res.redirect('/login');
}
}
}
Y luego, en app.get ('/ login') que establece req.session.loginFailed ser falsa;
Esto debería funcionar, pero solo quiero llamarlo a una app.get() o app.post() etc. para una de mis páginas reales. Creo que se llama muchas veces para muchas solicitudes diferentes (porque al cargar una página, se llama muchas veces 'configuración de loginFailed a true')
¿Hay una mejor manera de hacerlo? ¿O debería simplemente llamarlo antes de cada página en mi sitio?
Bastante, es gracioso porque en realidad estaba trabajando fuera de los tutoriales del nodo. Lo que pasa es que todo mi sitio requiere que hayas iniciado sesión, así que arreglé juntos una forma de no tener que incluirlo manualmente en todas las rutas, pero solo lo incluiré si es el camino correcto. –
Estoy de acuerdo con @alessioalex. Sin embargo, si insiste en el enfoque que ha establecido, asegúrese de que 'app.use (authenticateUser)' esté DESPUÉS del middleware de la sesión. – danmactough