【问题标题】:Symfony 3.4 session timeSymfony 3.4 会话时间
【发布时间】:2018-08-25 15:54:02
【问题描述】:

在我的 Symfony 3.4 应用程序中,用户会在一段时间后自动注销。我想改变这种行为,让我的应用程序永远不会自动注销。只有当用户单击注销链接时,它才应该注销会话。

我已阅读文档并尝试设置 cookie_lifetime,但它对我不起作用。如果有人在这方面工作,请建议如何进行。

更新:

我正在使用此文档页面http://symfony.com/doc/master/components/http_foundation/session_configuration.html#session-lifetime

我正在使用基于 Symfony 3.4 flex 的项目。

我在 config/packages/framework.yml 中设置配置。配置如下:

framework:
    session:
        handler_id: ~
        cookie_lifetime: 31536000
        gc_maxlifetime: 31536000

【问题讨论】:

  • 您能否提供一个代码示例来说明您到目前为止所尝试的内容?特别是您如何设置cookie_lifetime?您是否使用过此文档页面? symfony.com/doc/current/security/remember_me.html
  • 我添加了更多信息
  • 你试过我提供的链接了吗?似乎您还必须设置某事。在firewall.
  • @Musterknabe 不,记住我在这种情况下不需要。我已经在下面回答了我自己的问题。
  • 啊,对不起,那我误会你了。您不想要 remember_me 函数,您只是希望用户根本不会退出,对吗?

标签: symfony php-7.1 symfony4 symfony-3.4


【解决方案1】:

经过长时间调试,发现下面的配置是在告诉 Symfony 使用默认的 PHP 保存处理程序和默认的 session 文件路径。

framework:
    session:
        handler_id: ~

因此 Symfony 会话文件存储在 /var/lib/php/sessions 目录中。在基于 Debian 的操作系统中,cron 作业每半小时删除一次会话文件。此 cron 作业根据与 apache2 关联的 PIDs 识别活动会话,并仅更新这些活动会话文件的上次访问时间和上次修改时间。

然后相同的 cron 作业正在删除在 gc_maxlifetime 之前具有最后修改时间的会话文件,即;非活动会话。主要问题是gc_maxlifetime 仅基于php.ini 文件确定,而不考虑Symfony 的.yaml 文件。因此 Symfony 的 .yaml 文件中的配置被忽略,而使用 PHP 的 gc_maxlifetime

这使得会话文件在 20 分钟到 30 分钟后被删除。为了解决这个问题,我更新了.yaml的配置如下:

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

现在会话文件没有存储在默认的/var/lib/php/sessions 目录中,因此 cron 作业不会删除会话文件。现在 Symfony 正在处理这个会话处理工作,它现在可以完美运行。

【讨论】:

    【解决方案2】:

    这是 symfony 4 的解决方案。

    session:
            #handler_id: ~
            handler_id: session.handler.native_file
            save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'        
            cookie_lifetime: 1800 // was "lifetime" but deprecated
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2018-11-04
      相关资源
      最近更新 更多