会话
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.3,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
会话
ob娱乐下载Symfony提供了一个会话对象和几个实用程序,您可以使用它来存储用户请求之间的信息。
配置
会议提供的HttpFoundation组件包含在所有Symfony应用程序,无论你如何安装它。ob娱乐下载在使用会话之前,检查他们的默认配置:
- YAML
- XML
- PHP
1 2 3 4 5 6 7 8 9 10 11
#配置/包/ framework.yaml框架:会话:#允许在应用程序会话的支持启用:真正的#服务用于会话的ID存储。# NULL意味着Symfony使用ob娱乐下载PHP默认会话机制handler_id:零#提高用于会话cookie的安全性cookie_secure:“汽车”cookie_samesite:“宽松”
设置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服务中注入你的服务和控制器如果你type-hint论证RequestStack:
1 2 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
使用ob娱乐下载\组件\HttpFoundation\RequestStack;类SomeService{私人美元requestStack;公共函数__construct(RequestStack美元requestStack){美元这- >requestStack =美元requestStack;}公共函数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
服务定义来构建会话
对象使用默认AttributeBag
由NamespacedAttributeBag
:
- YAML
- XML
- PHP
1 2 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。为了防止这一点,你必须的完全避免访问会话。