在Symfony2中以编程方式设置会话生存期

问题描述:

我一直在线研究,但找不到答案。在Symfony2中,我明白可以通过config.yml文件静态设置会话生存期。在Symfony2中以编程方式设置会话生存期

但是,我需要能够根据我的代码中的某些情况设置会话的生存期。是否有可能以编程方式设置会话生存期?

似乎在Symfony2中,您无法即时更改会话存储容器的属性:请参见https://github.com/symfony/HttpFoundation/blob/master/SessionStorage/SessionStorageInterface.php以了解可用的实际实现接口,并且请注意,没有任何内容允许您更改生存期值。

然而,会话类默认使用session_get_cookie_params方法来设置会话生存期:可以通过调用session_set_cookie_params(:尽量尽早在控制器称之为会话初始化优选之前)调整这些值。看看是否适合你。

根据不同的情况下(不是POST请求与形式例如CSRF保护),请迁移可以作为很好:

$request->getSession()->migrate(); 

根据文档:“当前会话迁移到一个新的会话同时保持所有会话属性。“