Se ti capisco correttamente, tutto quello che vuoi è che la tua sessione funzioni correttamente nei tuoi moduli? Supponendo che sia corretto ci sono due passaggi singoli.
1) Creare la configurazione: module.config.php
return array(
'session' => array(
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
),
);
2) iniziare la sessione: Module.php
use Zend\Session\Config\SessionConfig;
use Zend\Session\SessionManager;
use Zend\Session\Container;
use Zend\EventManager\EventInterface;
public function onBootstrap(EventInterface $evm)
{
$config = $evm->getApplication()
->getServiceManager()
->get('Configuration');
$sessionConfig = new SessionConfig();
$sessionConfig->setOptions($config['session']);
$sessionManager = new SessionManager($sessionConfig);
$sessionManager->start();
/**
* Optional: If you later want to use namespaces, you can already store the
* Manager in the shared (static) Container (=namespace) field
*/
Container::setDefaultManager($sessionManager);
}
Trova più opzioni nella documentazione di \Zend\Session\Config\SessionConfig
Se si desidera memorizzare anche i cookie, vedere this Question. Crediti a Andreas Linden per la sua risposta iniziale - Sto semplicemente copiando il suo.
Grazie, ha funzionato. Come nota per chiunque stia usando questo, l'ho buttato nel mio modulo Applicazione (che uso solo per la maggior parte della mia configurazione principale) e ho fatto in modo di caricarlo prima. – dragonmantank
Potresti spiegare come impostare automaticamente la sessione ZF2 per essere distrutta ogni volta che chiudo il browser? Il modo standard è impostare 'cookie_lifetime = 0'. Ma con ZF2 non funziona. Non distrugge la sessione con la chiusura del browser. Inoltre, se imposto 'remember_me_seconds = 1' (zero genera un'eccezione), non funziona - tutte le informazioni sono presenti in modo sicuro nella sessione dopo aver chiuso il browser. Come impostare tale opzione in ZF2? Grazie. – Green
A quanto ho capito, è sbagliato utilizzare il setDefaultManager statico per passare il gestore al contenitore. È necessario creare un'istanza del contenitore e iniettare il gestore tramite costruttore o utilizzare setManager. – markus