2011-04-17 57 views
7

Estoy utilizando node.js con el marco express. Como tienda de sesiones, estoy usando MongoDB. ¿Cómo puedo establecer la duración después de la cual los objetos de la sesión se eliminan de MongoDB? Así es como yo estoy haciendo la declaración:Duración de la sesión en node.js con express y MongoDB

app.use(express.cookieParser()); 
    app.use(express.session({ 
       secret: "Stays my secret", 
       store: new MongoStore({ db: 'myDB' }) 
        })); 

Respuesta

7

Su pregunta es un poco vago, pero por lo que he entendido que wa no para establecer el periodo de caducidad de la sesión:

puede utilizar como maxAge por lo que: se requiere

app.use(express.cookieParser()); 
app.use(express.session({ 
    secret : "Stays my secret", 
    maxAge : new Date(Date.now() + 3600000), //1 Hour 
    expires : new Date(Date.now() + 3600000), //1 Hour 
    store : new MongoStore({ db: 'myDB' }) 
})); 

expires valor para las nuevas versiones de expreso donde como maxAge es para las versiones anteriores, sólo se debe necesita expires sin embargo.

+4

Gracias. ¿Se restablece el temporizador para maxAge cada vez que se usa la sesión o cuenta desde la creación de la sesión? – Thomas

+3

Basado en http://stackoverflow.com/questions/10429557/whats-the-correct-way-to-use-maxage-with-express-js, parece que su configuración de uso de fecha requiere una clave "expira" , no "maxAge". – Aaron

+5

maxAge debe ser una * edad * (por ejemplo, un valor en milisegundos) y no * un * momento * en el futuro. – UpTheCreek

0

@RobertPitt edita tu respuesta. Cookie (sesión) objeto se parece a:

{ 
"cookie":"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"}, 
"your_var_1":"value 1", 
"your_var_2":"value 2", 
... 
} 

argumento para express.session debería tener este aspecto (que se encuentra en la documentación):

app.use(express.session({ 
    secret : "Stays my secret", 
    cookie: { 
     maxAge : new Date(Date.now() + 3600000), //1 Hour 
     expires : new Date(Date.now() + 3600000), //1 Hour 
    }, 
    store : new MongoStore({ db: 'myDB' }) 
})); 

Por otra parte esto:

maxAge : new Date(Date.now() + 3600000), //1 Hour 

hará que cada cookie (aquí también sesión) caducará automáticamente una hora después del inicio del servidor

Cuestiones relacionadas