He intentado redirigir a los usuarios a una página de inicio de sesión después de enviar una solicitud a la página de inicio si no han iniciado sesión, pero siguen siendo redirigidos a la página de inicio de todos modos. Tengo un método que se usa para verificar si están conectados y devuelve un booleano con su estado, luego he escrito otra función de ayuda usando este método para redirigir al usuario:
const verifySession = (req, res, next) => { if (req.session) { models.Sessions.get({hash: req.session.hash}) .then(sessionInfo => { return models.Sessions.isLoggedIn(sessionInfo); }) .then (status => { if (!status) { console.log('status', status); res.redirect('/login'); } else { next(); } }); } };
Console.log para el estado devuelve falso como se esperaba, pero aún no se produce ninguna redirección. He intentado usar esta función de ayuda de varias maneras diferentes en mi controlador de solicitud expresa:
app.get('/', (req, res) => { verifySession(req, res); res.render('index'); });
O:
app.get('/', verifySession, (req, res) => { res.render('index'); });
O también:
app.use('/', verifySession); app.get('/', (req, res) => { res.render('index'); });
Ninguno de estos ha podido redirigir al usuario y aún se envían a la página de inicio, incluso cuando el estado es falso y debería estar ocurriendo la llamada redirect.
const verifySession = (req, res, next) => { if (req.session) { return models.Sessions.get({hash: req.session.hash}) .then(sessionInfo => { return models.Sessions.isLoggedIn(sessionInfo); }) .then (status => { if (!status) { console.log('status', status); return res.redirect('/login'); } else { return next(); } }); } return res.redirect('/login'); //if req.session is falsey };
app.use('/', verifySession); app.get('/', (req, res) => { res.render('index'); });