Si te entiendo correctamente, ¿todo lo que quieres hacer es que tu sesión funcione correctamente en tus módulos? Suponiendo que es correcto, hay dos pasos individuales.
1) Crear la configuración: module.config.php
return array(
'session' => array(
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
),
);
2) Iniciar la sesión: 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);
}
Encuentra más opciones en la documentación de \Zend\Session\Config\SessionConfig
Si también desea almacenar cookies, consulte this Question. Créditos a Andreas Linden por su respuesta inicial: simplemente estoy copiando el suyo.
Gracias, esto funcionó. Como nota para cualquier otra persona que use esto, lo tiré en mi módulo de Aplicación (que acabo de usar para la mayoría de mi configuración principal) y me aseguré de que se cargara primero. – dragonmantank
¿Podría explicar cómo configurar ZF2 Session para que se destruya automáticamente cada vez que cierre el navegador? La forma estándar es establecer 'cookie_lifetime = 0'. Pero con ZF2 no funciona. No destruye la sesión con el navegador cerrado. Además, si configuro 'remember_me_seconds = 1' (cero arroja una excepción), tampoco funciona: toda la información existe de manera segura en la sesión después de cerrar el navegador. ¿Cómo establecer una opción de este tipo en ZF2? Gracias. – Green
Según tengo entendido, es incorrecto usar el setDefaultManager estático para pasar el administrador al contenedor. Debería crear una instancia del contenedor e inyectar el administrador a través del constructor o usar setManager. – markus