繁体   English   中英

Zend Framework 2会话的生命周期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM