会话代理举例

编辑本页

会话代理举例

会话代理机制有多种用途,本文将演示两种常见用途。类的扩展类来创建自定义保存处理程序,而不是使用常规的会话处理程序SessionHandlerProxy类。

然后,将类定义为服务.如果你在用默认的服务。yaml的配置,这是自动发生的。

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

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

请继续阅读下一节,了解如何在实践中使用会话处理程序来解决两个常见的用例:加密会话信息和定义只读来宾会话。

会话数据加密

如果需要加密会话数据,可以根据需要使用代理对会话进行加密和解密。下面的示例使用php-encryption库,但你可以调整它到任何其他库,你可能正在使用:

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

只读来宾会话

在某些应用程序中,来宾用户需要会话,但并不特别需要持久化会话。在这种情况下,您可以在写入会话之前拦截会话:

12 34 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下载地址SecurityBundle安全使用欧宝娱乐app下载地址组件HttpFoundation会话存储代理SessionHandlerProxyReadOnlySessionProxy扩展SessionHandlerProxy私人安全公共函数__construct(\ SessionHandlerInterface处理程序、安全安全->安全=安全::__construct (处理程序);}公共函数id数据如果->getUser () & &->getUser ()->isGuest ()) {返回;}返回::写(id数据);}私人函数getUser()用户->安全->getUser ();如果(is_object (用户)) {返回用户;}}}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 6.2支持通过苏禄人
欧宝娱乐app下载地址Symfony 6.2支持通过Les-Tilleuls.coop