symfony www.example.com _id的有效值是什么framework.session.storage?

lg40wkob  于 2023-03-23  发布在  其他
关注(0)|答案(3)|浏览(127)

在Symfony配置中有一个条目framework.session.storage_id。这个设置也出现在Symfony configuration documentation的默认配置中,但没有解释。我的假设是它定义了会话数据在服务器端的存储位置。
我看到的这个条目的值包括session.storage.mock_filesession.storage.nativesession.storage.filesystem。我不确定这些值的确切含义(例如,mock文件和文件系统之间的区别是什么?),并且还认为这不是可能值的完整列表。
那么这个配置键究竟控制什么,哪些值是有效的呢?

ruoxqz4g

ruoxqz4g1#

framework.session.storage_id的有效值如下:

  • session.storage.mock_file-用于测试。它根本不启动会话。
  • session.storage.filesystem-用于测试。它是session.storage.mock_file的别名。
  • session.storage.native-使用定义的会话处理程序的默认实现
  • session.storage.php_bridge - for legacy apps

从开发者的Angular 来看,有一个session服务,它抽象了与会话的工作。session服务依赖于一些 * 会话存储服务 会话存储 * 从PHP的Angular 实现了会话管理(例如调用session_start()函数)。* 存储 * 还取决于某些 * 会话处理程序 处理程序 *是\SessionStorage的实现,它告诉如何以及在哪里物理存储会话。
This three layer design允许为测试创建 storage,它根本不调用session_start(),也不使用handler(session.storage.mock_file)。或者创建可以从任何地方存储和加载会话的 handlersession.storage.native)。session.storage.php_bridge解决了session_start()被外部PHP代码调用的情况(而不是Symfony session storage)。
我希望这是清楚的理解。

drkbr07n

drkbr07n2#

Symfony中的会话管理基于两个主要规则。

  1. Symfony必须启动会话。
  2. Symfony会话旨在取代PHP原生函数session_*()$_SESSION global的使用。
    然而,也存在一些例外。有时可能需要将Symfony集成到遗留应用程序中,该应用程序使用session_start()启动会话。通过**session.storage.php_bridge指令,您可以使用特殊的网关管理会话,该网关旨在允许Symfony使用在框架外部启动的会话。
    为了使使用会话的代码可测试,
    session.storage.mock_file**指令允许模拟PHP会话的流,而无需真正启动它。
sqxo8psd

sqxo8psd3#

对于Symfony 6.x,它已经改变了。作为一个例子,这对我来说很有效:

framework:
   test: true
   session:
       storage_factory_id: session.storage.factory.mock_file

相关问题