2016-01-07 9 views
16

Desidero avere l'opzione "Resta connesso" come quella fornita da Gmail. In questo modo, l'utente può decidere se desidera mantenere la sessione aperta all'apertura di una nuova sessione del browser dopo averla chiusa in precedenza.Rimani connesso con l'opzione con sessione di cookie in express

Esaminando i problemi del github, ho visto the cookie-session component doesn't provide a way to upate the maxAge property dynamilly.

Mi chiedo quindi se non vi è alcun modo per ottenere la funzionalità "Resta connesso" con il componente cookie-session.

Mi sembra una funzionalità di base per un componente che viene scaricato 80K times a month.

+1

Questo non fornisce ciò che stai cercando: https://www.npmjs.com/package/cookie-session#per-user-sticky-max-age? – SlashmanX

+0

@SlashmanX non proprio. 'req.body' non sembra essere accessibile nella parte centrale, quindi come posso basarlo sulla casella di controllo" Resta connesso "? – Alvaro

+1

Potrebbe non essere il modo migliore per farlo, ma potresti ottenere il cookie e modificare la scadenza per ogni richiesta (se sono stati abilitati per l'accesso)? –

risposta

1
// This allows you to set req.session.maxAge to let certain sessions 
// have a different value than the default. 
app.use(function (req, res, next) { 
    // here you can see whether they checked the checkbox or not, and change maxAge. 
    // the default should be that it expires when the browser is closed 
    req.sessionOptions.maxAge = req.session.maxAge || req.sessionOptions.maxAge 

    // or you can try to set expires to 1 day from now: 
    req.sessionOptions.expires = new Date(Date.now()+86400000) 
    // or at the end of the session: 
    req.sessionOptions.expires = 0 
}) 
+0

Nop, è appena preso dai documenti e non fornisce una soluzione al problema. – Alvaro

+0

Inoltre, come ho detto, "req.body" non sembra essere accessibile nella middelware. – Alvaro

+0

Si prega di decidere: E 'da parte dei documenti e quindi indica che req è disponibile e quindi è una soluzione O non è dal documento – Gavriel

1

Se si utilizza ExpressJS, il modulo di sessione ha un'opzione.

https://github.com/expressjs/session

alternativa req.session.cookie.maxAge tornerà il tempo rimanente in millisecondi, che possiamo anche ri-assegnare un nuovo valore per regolare la .expires struttura appropriatamente. Di seguito sono sostanzialmente equivalenti

+0

I ' m non usando la sessione Express, ma cookie-session. Il motivo principale è il seguente: 'Avviso La memoria di sessione lato server predefinita, MemoryStore, non è appositamente progettata per un ambiente di produzione. Sto usando Windows, e non sembra facile andare per un altro lato server Conservazione. Troppo complicato per qualcosa che dovrebbe essere più facile ... – Alvaro

+0

Se non hai nessun altro archivio di sessione (come redis), userai comunque l'archivio di memoria, in qualsiasi altro modulo di sessione (o senza modulo). Se non hai intenzione di creare qualcosa di grande, puoi usare memorystore senza problemi. – Anakin

+0

Stai dicendo che [cookie-session] (https://github.com/expressjs/cookie-session) non è progettato per gli ambienti di produzione? – Alvaro