2013-01-05 13 views
6

Ho cercato di impostare la data di scadenza del mio cookie in Node.js utilizzando Express 3.0, ma non funziona nulla.Impossibile impostare cookie "expires" o "maxAge" in Node.js utilizzando Express 3.0

Il mio primo tentativo:

res.cookie('user', user, { maxAge: 9000, httpOnly: true }); 

finisce proprio in un cookie che ha un tempo di scadenza non valida in base a Chrome. poi ho cercato di impostare 'scade', invece, in questo modo:

res.cookie('user', user, { expires: new Date(new Date().getTime()+5*60*1000), httpOnly: true }); 

E ora la mia cookie è semplicemente un cookie di sessione.

Qualcuno sa come risolvere questo problema?

+0

Grazie per questa domanda. la tua domanda insieme a questo link mi ha portato a una soluzione che stavo cercando: http://stackoverflow.com/questions/16209145/how-to-set-cookie-in-node-js-using-express-framework – jmunsch

risposta

3

devi usare req.session.cookie:

req.session.cookie.expires = false; 

req.session.cookie.maxAge = 5 * 60 * 1000; 

Vedi anche connect docs.

+0

Scoperta : funzionava davvero. Chrome dice solo che il formato dell'ora è sbagliato, ma lo onora ancora. – skerit

+0

Hai detto res.session, poi fai un esempio con req.ession ... Poi, dopo aver accettato la risposta, l'intervistatore originale dice che "it" ha già funzionato ... Come facciamo noi sfortunati googler con la stessa domanda a chiedere aiuto da questa? – Spork

2

La risposta accettata non funziona per me .. ma la domanda originale ha la versione che funziona. Per esempio

var language = 'en'; 
//10 * 365 * 24 * 60 * 60 * 1000 === 315360000000, or 10 years in milliseconds 
var expiryDate = new Date(Number(new Date()) + 315360000000); 
this.__res.cookie('lang', language, { expires: expiryDate, httpOnly: true }); 
0

Do atto che MaxAge è in milliseconds-

res.cookie('jwtToken', token, { maxAge: 2 * 60 * 60 * 1000, httpOnly: true }); // maxAge: 2 hours 
Problemi correlati