Estoy (casi) utilizando con éxito Node.js con Express y Redis para manejar sesiones.Node.js - La sesión no persiste a través de res.redirect()
El problema que tengo es que la sesión no se guarda cuando uso res.redirect()
.
Así es como lo veo:
req.session.username = username.toString();
console.log(req.session);
res.redirect('/home');
El console.log() impresiones:
{ lastAccess: 1322579131762,
cookie:
{ path: '/',
httpOnly: true,
_expires: Tue, 29 Nov 2011 15:06:31 GMT,
originalMaxAge: 60000 },
username: 'admin' }
Ahora, aquí está el código siguiente:
app.get('/home', [app.requireLogin], function(req, res, next) {
// Not showing the rest as it's not even getting there
// Instead, here is what's interesting
app.requireLogin = function(req, res, next) {
console.log(req.session);
Este console.log() imprime esto:
{ lastAccess: 1322579131775,
cookie:
{ path: '/',
httpOnly: true,
_expires: Tue, 29 Nov 2011 15:06:31 GMT,
originalMaxAge: 60000 } }
Claramente, el objeto 'nombre de usuario' ha desaparecido. La sesión no lo ha mantenido, y acaba de reconstruir uno nuevo.
¿Cómo puedo solucionar esto? No lo dudes si necesitas información.
Este es el código donde hice la gestión de sesiones:
app.configure(function() {
// Defines the view folder and engine used.
this.set('views', path.join(__dirname, 'views'));
this.set('view engine', 'ejs');
// Allow parsing form data
this.use(express.bodyParser());
// Allow parsing cookies from request headers
this.use(express.cookieParser());
// Session management
this.use(express.session({
// Private crypting key
secret: 'keyboard cat',
store: new RedisStore,
cookie: {
maxAge: 60000
}
}));
this.use(app.router);
});
Aquí es todo el proyecto (quiero decir, partes de ella), en lo esencial: https://gist.github.com/c8ed0f2cc858942c4c3b (ignorar las propiedades de los puntos de vista prestados)
¿Puedes pegar también el código donde estás incluyendo la tienda de sesiones Redis? Hay una opción de tiempo de espera allí, tal vez accidentalmente lo configura demasiado bajo. – alessioalex
Agregado :) Está configurado en 60 segundos, y claramente no uso 60 segundos para escribir las credenciales ... –
Supongo que este es un proyecto pequeño, creo que es mejor publicarlo en alguna parte (gist, pastie) y dar un enlace. Apuesto a que el error está de alguna manera en un código que no está pegando. (solo una conjetura) – alessioalex