会话

编辑本页

会话

ob娱乐下载Symfony提供了一个会话对象和几个实用程序,您可以使用它们在请求之间存储关于用户的信息。

配置

会话由HttpFoundation组件,它包含在所有Symfony应用程序中,无论您如何安装ob娱乐下载它。在使用会话之前,请检查它们的默认配置:

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
#配置/包/ framework.yaml框架:#启用会话支持。请注意,只有在对会话进行读写时才会启动会话。#删除或注释此部分以显式禁用会话支持。会话:#会话存储服务ID# NULL表示Symfony使用Pob娱乐下载HP默认会话机制handler_id:#提高用于会话的cookie的安全性cookie_secure:汽车cookie_samesite:宽松的storage_factory_id:session.storage.factory.native

设置handler_id配置选项为意味着Symfony将ob娱乐下载使用原生PHP会话机制。会话元数据文件将存储在Symfony应用程序之外的一个由PHP控制的目录中。ob娱乐下载虽然这通常简化了事情,但如果其他写入同一目录的应用程序具有较短的最大生存期设置,则一些与会话过期相关的选项可能无法正常工作。

如果您愿意,您可以使用session.handler.native_file服务handler_id让Symfonob娱乐下载y自己管理会话。另一个有用的选项是save_path,它定义了Symfony存储会话元数据文件的目录:ob娱乐下载

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/包/ framework.yaml框架:会话:#……handler_id:“session.handler.native_file”save_path:' % kernel.project_dir % / var /会议/ % kernel.environment % '

查看Symfony配置参考以ob娱乐下载了解更多关于其他可用配置的信息会话配置选项.你也可以将会话存储在数据库中

基本用法

该会话可通过请求对象和RequestStack服务。ob娱乐下载Symfony注入request_stack服务和控制器中的服务,如果您键入提示参数RequestStack

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
使用ob娱乐下载组件HttpFoundationRequestStackSomeService私人requestStack公共函数__construct(RequestStackrequestStack->requestStack =requestStack//在构造函数中访问会话建议*NOT*,因为//它可能还不能访问或导致不必要的副作用// $this->session = $requestStack->getSession();公共函数someMethod()会话->requestStack->getSession ();//在会话中存储属性以供以后重用会话->集(“属性名称”“属性-值”);//通过名称获取属性喷火会话->get (“foo”);//第二个参数是属性不存在时返回的值过滤器会话->get (“过滤器”[]);/ /……}}

5.3

SessionInterface而且会话服务在Symfony 5.3中已弃用。ob娱乐下载相反,注入RequestStack服务获取当前请求的会话对象。

存储的属性在该用户会话的剩余时间内保留在会话中。属性管理的键值对AttributeBag类。

5.3

NamespacedAttributeBag类自Symfony 5.3起已弃用。ob娱乐下载如果您需要这个特性,就必须自己实现这个类。

如果您的应用程序需求比较复杂,您可能更喜欢使用命名空间会话属性哪些是用NamespacedAttributeBag类。在使用它们之前,重写session_listener服务定义来构建您的会话对象。AttributeBagNamespacedAttributeBag

  • YAML
  • XML
  • PHP
12 3 4 5 6 7 8 9 10 11 12
#配置/ services.yamlsession.factory:可以使用autoconfigure:真正的类:App \会议\ SessionFactory参数:-“@request_stack”-“@session.storage.factory”-[' @session_listener ',“onSessionUsage”-“@session.namespacedattributebag”session.namespacedattributebag:类:ob娱乐下载Symfony组件\ \ HttpFoundation \会议\ \ NamespacedAttributeBag属性

避免为匿名用户启动会话

每当您读取、写入或甚至检查会话中是否存在数据时,会话都会自动启动。这可能会损害应用程序的性能,因为所有用户都会收到一个会话cookie。为了防止这种情况,你必须完全避免访问会话。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony 5.4支持通过私人Packagist