[英]Zend Framework 2 session life time
我试图用\\Zend\\Session\\Container
设置会话的最长生命时间。 为了测试它,我把它放到1秒。
现在我查看了文档
所以我做了
$config = new StandardConfig();
$config->setOptions(array(
'remember_me_seconds' => 1,
));
$manager = new SessionManager($config);
$session = new Container('user', $manager);
但没有成功。 然后我开始谷歌搜索,找到了这个答案
所以我做了配置
return array(
'session' => array(
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
),
);
(配置工作并加载到管理器中)但再次没有成功
所以我继续搜索并找到了答案
但再没有成功。
因此,经过所有的搜索,我无法让它工作,所以现在我希望其他人得到它的工作,并可以帮助我。
好吧,我最终发现了问题所在。
问题是我用过
$sessionConfig = new SessionConfig();
$sessionConfig->setOptions(array(
'use_cookies' => true,
'cookie_httponly' => true,
'gc_maxlifetime' => $config['authTimeout'],
));
$manager = new SessionManager($sessionConfig);
这个“工作”唯一的问题是在生命周期session
设置了一个cookie。 这在浏览器中有不同的东西。 即如果你关闭标签,它就会被破坏,所以无论gc_maxlifetime
都不行。
因此,以下是一个简单的解决方案
$sessionConfig = new SessionConfig();
$sessionConfig->setOptions(array(
'use_cookies' => true,
'cookie_httponly' => true,
'gc_maxlifetime' => $config['authTimeout'],
'cookie_lifetime' => $config['authTimeout'],
));
$manager = new SessionManager($sessionConfig);
希望它会有所帮助
$config['authTimeout']
是一个正整数值
$config = new StandardConfig();
$config->setOptions(array(
'cookie_lifetime' => '2419200',
'gc_maxlifetime' => '2419200'
));
将2419200
的值更改为您实际需要的秒数。
在应用程序global.php中,您可以在模块配置中执行此操作:
'session_config' => array(
'name' => 'your session name',
'remember_me_seconds' => 60 * 60 * 24 * 30*3,
'use_cookies' => true,
'cookie_httponly' => true,
),
检查Zend \\ Session \\ Service \\ SessionConfig。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.