php - 如何增加 Symfony2 中的 session 生命周期?

标签 php session symfony

我有一个带有记住复选框的登录名。 如果选中记住复选框,我会尝试将 session 的生命周期设置为 1 年,但无论我尝试什么,它都不起作用...Symfony 探查器总是说 session 生命周期为 0。

这就是我在我的 Controller 函数中尝试的:

$this->getRequest()->getSession()->set("gesaudit",array("login"=>true,"user"=>$user));

if($remember == "1"){
    $lifetime = new NativeSessionStorage();
    $lifetime->setOptions(array('cookie_lifetime' => 31557600));
}else{
    $lifetime = new NativeSessionStorage();
    $lifetime->setOptions(array('cookie_lifetime' => 0));
}

最佳答案

根据 documentation 可以管理正常 session 生命周期, 通过 config.yml:

framework:
    session:
        cookie_lifetime: 3600

要将生命周期设置为一年:3600*24*365 = 86400*365 = 31536000。简单 :)。

这会将 session cookie 的生命周期设置为 1 小时。您可以配置大量其他内容,但这就是我提供文档链接的原因。 如果您坚持手动执行此操作,在特定情况下/ Controller 中,则将选项数组传递给 Controller ​​。也许这样可以代替使用 setOptions 方法:如果您的 php.ini 包含:

session.auto_start = 1

然后创建 NativeSessionStorage 实例将自动并立即创建具有默认生命周期的 session 。之后设置它几乎没有或没有区别。检查您的 ini 设置,或执行以下操作:

$test = new NativeSessionStorage();
var_dump($test->isStarted())

如果它转储true,尝试:

$lifetime = new NativeSessionStorage(
    array(
        'cookie_lifetime' => 31536000
    )
);

Symfony2 session 中的所有内容都可以找到here .

如果您使用的是 Symfony2.4,文档中有一个特殊部分处理 remember-me functionality ,正如 Jakub Polák 指出的那样。它的本质是复选框必须被称为 _remember_me,config.yml 必须定义一个 %secret% 值,并且您添加(定制的)将此版本添加到您的 security.yml 文件中:

firewalls:
    main:
        remember_me:
            key:      "%secret%"
            lifetime: 31536000
            path:     /
            domain:   ~ # Defaults to the current domain from $_SERVER

但是文档解释了这一切,但是您必须“浏览”手册。例如,如果您想为特定部分指定不同的记住我行为,请更改上面 yml 片段中的 main,并添加 pattern 设置,如 explained here .
您可能最好扫描 the entire security section .

关于php - 如何增加 Symfony2 中的 session 生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362701/

相关文章:

php - uploadify firefox崩溃成功响应警报

php - 每次获取时都会从数据库中回显数据

php - CDbCriteria addConditions where 子句不明确

php - 违反完整性约束 : How to join two tables

android - 在 Android 中维护 cookie session

php - Symfony/Silex + Facebook SDK : Session Start conflict

php - 在 PHP 中重新打开 session

symfony - findBy() 外键不起作用

Mac OS 上的 PHP 7.2 memcached 扩展

容器内的 php Composer 丢失了供应商目录