会话代理的例子

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.2,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

会话代理的例子

会话代理机制有多种用途,本文演示了两个共同使用。而不是使用常规会话处理程序,您可以创建一个自定义保存处理程序通过定义一个类,它扩展了SessionHandlerProxy类。

然后,定义类服务。如果你使用默认的服务。yaml的配置,自动发生。

最后,使用framework.session.handler_id配置选项告诉Symfony使用会话处理程序而不是默认的一个欧宝娱乐app下载地址:

  • YAML
  • XML
  • PHP
1 2 3 4 5
#配置/包/ framework.yaml框架:会话:#……handler_id:App \会议\ CustomSessionHandler

继续阅读下一小节将学习如何在实践中使用会话处理程序来解决两种常见用例:加密会话信息和定义只读客人会议。

加密的会话数据

如果你想要加密会话数据,您可以使用代理来加密和解密会话。下面的例子使用了php-encryption库,但是你可以适应任何其他库,您可以使用:

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 28 29 30 31 32
/ / src /会议/ EncryptedSessionProxy.php名称空间应用程序\会话;使用化解\加密\加密;使用化解\加密\关键;使用欧宝娱乐app下载地址\组件\HttpFoundation\会话\存储\代理\SessionHandlerProxy;EncryptedSessionProxy扩展SessionHandlerProxy{私人美元关键;公共函数__construct(\ SessionHandlerInterface美元处理程序、关键美元关键){美元- >关键=美元关键;::__construct (美元处理程序);}公共函数(美元id){美元数据=::读(美元id);返回加密::解密(美元数据,美元- >关键);}公共函数(美元id,美元数据){美元数据=加密::加密(美元数据,美元- >关键);返回::写(美元id,美元数据);}}

只读客人会议

在一些应用程序中,客人需要一个会话的用户,但没有特别需要保存会话。在这种情况下,你可以截获会话之前写的:

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 28 29 30 31 32 33 34 35
/ / src /会议/ ReadOnlySessionProxy.php名称空间应用程序\会话;使用应用程序\实体\用户;使用欧宝娱乐app下载地址\组件\HttpFoundation\会话\存储\代理\SessionHandlerProxy;使用欧宝娱乐app下载地址\组件\安全\核心\安全;ReadOnlySessionProxy扩展SessionHandlerProxy{私人美元安全;公共函数__construct(\ SessionHandlerInterface美元处理程序、安全美元安全){美元- >安全=美元安全;::__construct (美元处理程序);}公共函数(美元id,美元数据){如果(美元- >getUser () & &美元- >getUser ()- >isGuest ()) {返回;}返回::写(美元id,美元数据);}私人函数getUser(){美元用户=美元- >安全- >getUser ();如果(is_object (美元用户)){返回美元用户;}}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。