2012-01-21 10 views
5

robię to tak:W Node.js Express/Connect, czy istnieje sposób na ustawienie sesji w nieskończoność?

app.use(express.session({ 
       cookie:{domain:"."+settings.c.SITE_DOMAIN}, 
       secret:'abc', 
       store: redis_store, 
       })); 

Podczas logowania do moich REDiS i wpisz TTL sess:..., wydaje się, że istnieje ważności na tej sesji.

Jak mogę sprawić, aby sesje nigdy nie wygasły? (za wszystko). Chcę również, aby pliki cookie nigdy nie wygasły.

+3

Pliki cookie (w tym pliki cookie sesji) nie mogą mieć nieskończonej daty wygaśnięcia. Największe, jakie można uzyskać praktycznie, to data w 2038 r., Po tym czasie przepełnisz pole znacznika czasu. –

+0

OK, na pewno działa. Jak ustawić go na 2038? – TIMEX

+3

@TIMEX, który nigdy nie wygasł, jest głupi. – Raynos

Odpowiedz

4

Jak wspomniano w Connect guide on the session middleware page (Express korzysta Połącz wewnętrznie), można określić opcję maxAge na sesjach:

  • cookies ustawienia cookie sesji, zalegających na {ścieżce: '/', HttpOnly: true , maxAge: 14400000}

przykład:

connect(
     connect.cookieParser() 
    , connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }}) 
    , connect.favicon() 
    , function(req, res, next){ 
     var sess = req.session; 
     if (sess.views) { 
     res.setHeader('Content-Type', 'text/html'); 
     res.write('<p>views: ' + sess.views + '</p>'); 
     res.write('<p>expires in: ' + (sess.cookie.maxAge/1000) + 's</p>'); 
     res.end(); 
     sess.views++; 
     } else { 
     sess.views = 1; 
     res.end('welcome to the session demo. refresh!'); 
     } 
    } 
).listen(3000); 

Uwaga: maxAge jest w milisekundach, więc na przykład dzień = 86400000

+0

Dni w milisekundach są dłuższe niż "86 400", czyli "86 400 000" długości milisekund. '(1 * 24 * 60 * 60 * 1000) => (dzień * godziny * minuty * sekundy * milisekundy)' –

+0

404 Wklejony link nie działa :) –

+1

@AviramNetanel dzięki, zaktualizowałem link. – alessioalex

Powiązane problemy