如何在事件订阅服务器中访问Symfony 3.3中的登录用户而不丢失web profiler

如何在事件订阅服务器中访问Symfony 3.3中的登录用户而不丢失web profiler,symfony,events,listener,symfony-3.3,Symfony,Events,Listener,Symfony 3.3,我对Symfony 3和面向对象的概念还比较陌生,所以如果我问了一些愚蠢的问题,我深表歉意 我正在构建一个包含多个组的应用程序,其中用户可以是多个组的成员,并且在每个组中可能有不同的角色 因此,我动态加载角色-在每个请求上,并与他们正在访问的组进行比较。这还可以通过手动更改浏览器地址来提供一些保护,防止登录用户切换组的用户权限升级-如果他们更改为该组,则在执行控制器之前,他们拥有更少(或没有)权限我正在加载角色 经过研究,似乎将事件订阅者绑定到kernel.request或kernel.cont

我对Symfony 3和面向对象的概念还比较陌生,所以如果我问了一些愚蠢的问题,我深表歉意

我正在构建一个包含多个组的应用程序,其中用户可以是多个组的成员,并且在每个组中可能有不同的角色

因此,我动态加载角色-在每个请求上,并与他们正在访问的组进行比较。这还可以通过手动更改浏览器地址来提供一些保护,防止登录用户切换组的用户权限升级-如果他们更改为该组,则在执行控制器之前,他们拥有更少(或没有)权限我正在加载角色

经过研究,似乎将事件订阅者绑定到kernel.request或kernel.controller事件是正确的方法

我需要访问此事件订阅服务器中的用户,并已通过注入TokenStorageInterface来完成此操作

如果我访问$this->tokenStorage->getToken(),我会得到一个空值,但是如果我访问$this->tokenStorage->getToken()->getUser(),我会得到有效的当前登录用户,但是会丢失开发人员web profiler,这对我非常有用。它还向我表明,我正在做一些干扰Symfony“引擎盖下”操作的事情,这可能会在以后产生后果

所以我的问题是,;为什么我会丢失web分析工具栏,如何才能找回它


非常感谢

我最终注意到我的事件被触发了两次——进一步的研究表明web profiler工具栏正在触发事件本身

我不知道为什么这意味着tokenStorage中的令牌为空,但当我使用下面问题的公认答案排除web探查器时,行为恢复到我预期的状态。它可以帮助别人