Symfony 4 会话过期太快

Posted

技术标签:

【中文标题】Symfony 4 会话过期太快【英文标题】:Symfony 4 session expire too soon 【发布时间】:2019-06-24 22:40:59 【问题描述】:

即使我在config/packages/framework.yaml 中设置了几天,我与 Symfony 4.0 的 php 会话也很快过期。

framework:

...
session:
    handler_id: ~
    cookie_lifetime: 604800
...

当用户完成登录过程后,他可以在网站上导航,如果他在几分钟后返回,则无需再次登录。

但如果他在 1 或 2 小时后返回(不确切知道),则会话已过期,他必须重新登录。

似乎可行的解决方案之一是更改您在上面看到的内容:

handler_id: session.handler.native_file
save_path: "%kernel.root_dir%/sessions"
cookie_lifetime: 604800    

不幸的是,该解决方案解决了开发环境中的问题,但一旦我在服务器上提取代码,应用程序就会崩溃。

【问题讨论】:

也许您没有权限更改服务器上的 php.ini:secure.php.net/manual/en/…symfony.com/doc/current/components/http_foundation/… 我如何知道我的 Symfony 配置文件是否覆盖了我的 php ini 文件? @myxaxa 【参考方案1】:

问题已解决

问题是 save_path。只需使用official Symfony Documentation 中建议的参数即可。这样,您的 cookie 将被正确存储。

session:
    handler_id: session.handler.native_file
    save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
    cookie_lifetime: 604800

【讨论】:

以上是关于Symfony 4 会话过期太快的主要内容,如果未能解决你的问题,请参考以下文章

即使我正在工作,会话也会过期,会话生命周期,Ajax 和 Symfony2

如何在 Symfony 中延长会话 cookie 的生命周期?

Symfony 1.4:表单中 CSRF 的自定义错误消息

带有 CSRF 令牌和会话的 Symfony 4 功能形式测试

当用户在 Symfony 中更改语言环境时更新用户会话

Symfony/Doctrine 超时过期 sqlstate