2013-10-22 6 views
5

Sto tentando di impostare la durata massima di una sessione con \Zend\Session\Container. Per testarlo l'ho messo a 1 sec.Durata della sessione Zend Framework 2

Ora ho guardato il docs

così ho fatto

Ma senza successo. Poi ho iniziato googling ed ho trovato this answer

Così ho fatto la configurazione per

return array(
    'session' => array(
     'remember_me_seconds' => 2419200, 
     'use_cookies' => true, 
     'cookie_httponly' => true, 
    ), 
); 

(la configurazione ha funzionato ed è stato caricato nel manager), ma ancora una volta senza successo

Così ho continuato a cercare e ho trovato this answer

Ma ancora nessun successo.

Quindi dopo tutta la ricerca non sono riuscito a farlo funzionare, quindi ora spero che qualcun altro abbia funzionato e possa aiutarmi.

risposta

6

Bene, ho finalmente scoperto qual era il problema.

Il problema è che ho usato

$sessionConfig = new SessionConfig(); 
$sessionConfig->setOptions(array(
    'use_cookies' => true, 
    'cookie_httponly' => true, 
    'gc_maxlifetime' => $config['authTimeout'], 
)); 
$manager = new SessionManager($sessionConfig); 

Questa "ha funzionato", l'unico problema era che non è stato impostato un cookie con il corso della vita session. Questo ha diverse cose nei browser. Cioè in chrome è distrutto se si chiude la scheda, quindi non importa quanto in alto il gc_maxlifetime non avrebbe funzionato.

Quindi una soluzione semplice potrebbe essere il seguente

$sessionConfig = new SessionConfig(); 
$sessionConfig->setOptions(array(
    'use_cookies' => true, 
    'cookie_httponly' => true, 
    'gc_maxlifetime' => $config['authTimeout'], 
    'cookie_lifetime' => $config['authTimeout'], 
)); 
$manager = new SessionManager($sessionConfig); 

Spero che avrebbe aiutato qualcuno nella futue

$config['authTimeout'] è un valore intero positivo

0
$config = new StandardConfig(); 
$config->setOptions(array(
    'cookie_lifetime' => '2419200', 
    'gc_maxlifetime' => '2419200' 
)); 

Modificare il valore di 2419200 per quanti secondi si vuole realmente.

+2

Penso di aver bisogno di impostare questo config al gestore e quindi al gestore nel contenitore. Se è così, non funziona per me. Ho anche provato a cambiare StandardConfig in SessionConfig – MKroeders

0

In global.php applicazione o si può fare nel modulo di configurazione:

'session_config' => array(
    'name' => 'your session name', 
    'remember_me_seconds' => 60 * 60 * 24 * 30*3, 
    'use_cookies' => true, 
    'cookie_httponly' => true, 
), 

controllo Zend \ Session \ Service \ SessionConfig.

+0

È necessario utilizzare questa configurazione manualmente. Dai un'occhiata qui: https://stackoverflow.com/questions/12774809/how-to-bootstrap-sessions-in-zend-framework-2 – nepda