Symfony1 会话结束时是否有Symfony回调?
我有一个应用程序正在对过滤器中的外部服务器进行身份验证。在该过滤器中,我尝试使用Symfony的Symfony1 会话结束时是否有Symfony回调?,symfony1,php-5.2,Symfony1,Php 5.2,我有一个应用程序正在对过滤器中的外部服务器进行身份验证。在该过滤器中,我尝试使用Symfony的setAttribute()方法在用户上设置几个会话属性: $this->getContext()->getUser()->setAttribute( 'myAttribute', 'myValue' ); 我发现,如果在设置属性后立即转储$\u SESSION。另一方面,如果我调用getAttribute('myAttribute'),我会准确地返回我输入的内容 一直以来,我都认
setAttribute()
方法在用户上设置几个会话属性:
$this->getContext()->getUser()->setAttribute( 'myAttribute', 'myValue' );
我发现,如果在设置属性后立即转储$\u SESSION
。另一方面,如果我调用getAttribute('myAttribute')
,我会准确地返回我输入的内容
一直以来,我都认为读/写用户属性与读/写会话是同义词,但这似乎是一个错误的假设。是否存在时间问题?我没有收到任何非对象错误,因此用户似乎已完全初始化
这里的断路器在哪里
谢谢
更新
发生这种情况的原因是因为我在myUser::shutdown()
中有一些代码清除了一堆东西。因为myUser
大致相当于$\u会话(至少在属性方面),所以我假设在每个会话结束时调用shutdown()
方法。不是。它似乎在每个请求结束时被调用,这就是为什么我的属性似乎从未被设置
现在,我想知道是否有一个会话关闭回调。有人知道吗?根据会话处理的方式,会话存储类有两种方法,sessionGC(在垃圾收集时调用)和sessionDestroy 您可以创建自己的会话类,扩展您当前使用的会话类,我们使用的是条令/PDO。默认设置为sfSessionStorage 要更改使用的类edit Factorys.yml,请执行以下操作:
all:
storage:
class: mySuperNewSessionStorageClass
谢谢我不喜欢改变我的配置&扩展session类来覆盖一个方法,但这绝对是一个有效的解决方案。