我正在尝试使用\Zend\Session\Container
设置会话的最长生命时间。为了测试它,我把它放到1秒。
现在我查看了docs
所以我做了
$config = new StandardConfig();
$config->setOptions(array(
'remember_me_seconds' => 1,
));
$manager = new SessionManager($config);
$session = new Container('user', $manager);
但没有成功。然后我开始谷歌搜索并找到this answer
所以我把配置改为
return array(
'session' => array(
'remember_me_seconds' => 2419200,
'use_cookies' => true,
'cookie_httponly' => true,
),
);
(配置工作并加载到管理器中)但是再次没有成功
所以我继续搜索并找到this answer
但又没有成功。
所以在经过所有搜索后我无法正常工作,所以现在我希望其他人能让它工作并帮助我。
答案 0 :(得分:6)
好吧,我最终发现了问题所在。
问题是我用过
$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']
是一个正整数值
答案 1 :(得分:0)
$config = new StandardConfig();
$config->setOptions(array(
'cookie_lifetime' => '2419200',
'gc_maxlifetime' => '2419200'
));
将2419200
的值更改为您实际需要的秒数。
答案 2 :(得分:0)
在应用程序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。