会话

会话

欧宝娱乐app下载地址symfony提供会话对象和几个实用程序,您可以用于存储有关请求之间用户的信息。

配置

会议由课程提供httpfoundation组件(无论您如何安装它,都包含在所有Symfony应用程序欧宝娱乐app下载地址中。在使用会话之前,请检查其默认配置:

  • yaml.
    1 2 3 4 5 6 7 8 9 10 11
    #配置/包/ framework.yaml框架会议#支持应用程序中的会话支持启用真的用于会话存储的服务的ID。#null表示symfony使用ph欧宝娱乐app下载地址p默认会话机制handler_id.空值#改进用于会话的cookie的安全性cookie_secure.'汽车'cookie_samesite.'lax'
  • XML.
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 17 18 19 20 21 22
    <! - 配置/包/ framework.xml  - ><?XML Version =“1.0”编码=“UTF-8”?><容器XMLNS =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”XMLNS:XSI =“http://www.w3.org/2001/xmlschema-instance”XMLNS:Framework =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”XSI:Schemalocation =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services.https://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services/services-1.0.xsd.http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony htps://www.oldmanjams.com/schema/dic/symfy/symfony-1.0.xsd“><! -启用:启用应用程序中的会话支持handler-id:用于会话存储的服务的IDnull表示symfony使用p欧宝娱乐app下载地址hp默认会话机制cookie-secure和cookie-samesite:改善用于会话的Cookie的安全性- ><框架:会话启用=“真的”handler-id =“空值”cookie-secure =“汽车”cookie-samesite =“松懈”/>
  • PHP.
    1 2 3 4 5 6 7 8 9 10 11 12 13
    // config / packages / framework.php$容器- >loadfromextension.'框架'['会议'=>[//启用应用程序中的会话支持'启用'=>真的//用于会话存储的服务的ID// null表示symfony使用p欧宝娱乐app下载地址hp默认会话机制'handler_id'=>空值//提高用于会话的cookie的安全性'cookie_secure'=>'汽车''cookie_samesite'=>'lax'],]);

设置handler_id.配置选项空值意味着Symfony将欧宝娱乐app下载地址使用本机PHP会话机制。会话元数据文件将在Symfony应用程序之外存储在PHP控制的目录中。欧宝娱乐app下载地址虽然这通常简化了事物,但如果写入同一目录的其他应用程序具有短的最大终身设置,则某些会话到期相关选项可能无法正常工作。

如果您更喜欢,您可以使用session.handler.native_file.服务为handler_id.让Symfon欧宝娱乐app下载地址y管理会话本身。另一个有用的选择是save_path.,它定义了Symfony将存储会话元数据文件的目录:欧宝娱乐app下载地址

  • yaml.
    1 2 3 4 5 6
    #配置/包/ framework.yaml框架会议#...handler_id.'session.handler.native_file'save_path.'%kernel.project_dir%/ var / sessions /%kernel.environment%'
  • XML.
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    <! - 配置/包/ framework.xml  - ><?XML Version =“1.0”编码=“UTF-8”?><容器XMLNS =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”XMLNS:XSI =“http://www.w3.org/2001/xmlschema-instance”XMLNS:Framework =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony”XSI:Schemalocation =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services.https://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services/services-1.0.xsd.http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/symfony htps://www.oldmanjams.com/schema/dic/symfy/symfony-1.0.xsd“><框架:会话启用=“真的”handler-id =“session.handler.native_file”保存路径=“%kernel.project_dir%/ var / sessions /%kernel.environment%”/>
  • PHP.
    1 2 3 4 5 6 7 8
    // config / packages / framework.php$容器- >loadfromextension.'框架'['会议'=>[// ......'handler_id'=>'session.handler.native_file''save_path'=>'%kernel.project_dir%/ var / sessions /%kernel.environment%'],]);

查看symfony Conf欧宝娱乐app下载地址ig参考以了解有关其他可用的更多信息会话配置选项。你也可以存储在数据库中的会话

基本用法

欧宝娱乐app下载地址symfony提供了一个会话服务,如果您键入符号,则提供在服务和控制器中注入的会话服务欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \ sessioninterface

欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \ sessioninterface;班级Someservice.{私人的$课程;上市功能__构造sessionInterface.$课程{$这一点- >会议=$课程;}上市功能SomeMethod.(){//在会话中存储属性以供稍后重复使用$这一点- >会议- >'attribute-name''属性值');//按名称获取属性$ foo=$这一点- >会议- >得到'foo');//第二个参数是当属性不存在时返回的值$筛选=$这一点- >会议- >得到'过滤器'[]);// ......}}

小费

每一个sessionInterface.支持实现。如果您有自己的实现,请在参数中键入它。

存储的属性留在会话中,以便在该用户的剩余部分中留在会话中。默认情况下,会话属性是与之管理的键值对欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \ attribute \ attributebag班级。

如果您的应用程序需要复杂,您可能更愿意使用命名方式会话属性与之管理欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \属性\ namespacedattributebag班级。在使用它们之前,覆盖会议服务定义替换默认值attributebag.由这件事namespacedattributebag.

  • yaml.
    1 2 3 4 5 6 7 8
    #配置/服务.YAML会议上市真的班级欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \ session争论['@ session.storage''@ session.namespacedattributebag']session.namespacedattributebag.班级欧宝娱乐app下载地址symfony \ component \ httpfoundation \ session \属性\ namespacedattributebag

避免为匿名用户开始课程

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

这项工作包括代码样本,是在a下获得的许可Creative Commons by-SA 3.0执照。