2013-10-22 19 views
5

Ich versuche die maximale Lebensdauer einer Sitzung mit der \Zend\Session\Container zu setzen. Um es zu testen, lege ich es auf 1 Sekunde.Zend Framework 2 Session Lebensdauer

Nun schaute ich auf die docs

Also habe ich

aber keinen Erfolg. Dann begann ich googeln und fand this answer

Also habe ich die Config zu

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

gemacht (die Config gearbeitet und wurde in den Manager geladen), aber wieder keinen Erfolg

So setzte ich gesucht und gefunden this answer

Aber wieder kein Erfolg.

Also nach all der Suche konnte ich es nicht funktionieren, so jetzt hoffe ich, jemand anderes hat es funktioniert und kann mir helfen.

Antwort

6

Nun habe ich endlich herausgefunden, was das Problem war.

Das Problem war, dass ich

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

Diese „gearbeitet“, war das einzige Problem verwendet, dass es ein Cookie mit der Lebensdauer session gesetzt wurde. Dies hat verschiedene Dinge in Browsern. Dh in Chrome ist es zerstört, wenn Sie die Registerkarte schließen, also egal wie hoch die gc_maxlifetime es würde nicht funktionieren.

So eine einfache Lösung die folgenden

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

Hoffe, dass es in der futue

$config['authTimeout'] jemand helfen würde, wäre eine positive ganze Zahl Wert

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

Ändern Sie den Wert von 2419200, wie viele Sekunden Sie eigentlich wollen.

+2

Ich glaube, ich brauche diese Einstellung vornehmen, config an den Manager und dann den Manager an den Container. Wenn ja, funktioniert es nicht für mich. Ich habe auch versucht, StandardConfig in SessionConfig zu ändern – MKroeders

0

In Anwendung global.php oder Sie können es in Modul Config tun:

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

Check Zend \ Session \ Service \ SessionConfig.

+0

Sie müssen diese Konfiguration manuell verwenden. Schauen Sie hier: https://stackoverflow.com/questions/12774809/how-to-bootstrap-sessions-in-zend-framework-2 – nepda