我有一个应用程序对过滤器中的外部服务器进行身份验证。在该过滤器中,我尝试使用 Symfony 的setAttribute()
方法为用户设置几个会话属性:
$this->getContext()->getUser()->setAttribute( 'myAttribute', 'myValue' );
我发现的是,如果我$_SESSION
在设置属性后立即转储。另一方面,如果我调用getAttribute( 'myAttribute' )
,我会准确地返回我输入的内容。
一直以来,我都假设读/写用户属性与读/写会话是同义词,但这似乎是一个不正确的假设。有时间问题吗?我没有收到任何非对象错误,因此用户似乎已完全初始化。
这里的断线在哪里?
谢谢。
更新
发生这种情况的原因是因为我有一些代码myUser::shutdown()
清除了一堆东西。因为myUser
它大致相当于 $_SESSION(至少在属性方面),所以我假设该shutdown()
方法将在每个会话结束时调用。它不是。它似乎在每个请求结束时被调用,这就是为什么我的属性似乎从未被设置的原因。
不过,现在我想知道是否有会话关闭回调。有人知道吗?