gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:07:58 24 4
gpt4 key购买 nike

我有一个带有记住复选框的登录名。如果选中记住复选框,我会尝试将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com