如何在事件订阅者中访问Symfony 3.3中的登录用户,而不会丢失Web分析器

时间:2018-01-01 21:42:53

标签: symfony events listener symfony-3.3

我对Symfony 3相对较新,实际上是面向对象的概念,如果我问一些愚蠢的东西,请道歉。

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

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

研究似乎与kernel.request或kernel.controller事件绑定的事件订阅者是正确的方法。

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

如果我访问$ this-> tokenStorage-> getToken()我有一个null,但如果我访问$ this-> tokenStorage-> getToken() - > getUser()我得到有效的当前登录用户,但丢失了开发人员Web分析器 - 这对我非常有用。它还向我表明,我正在做一些干扰Symfony'引擎盖'操作的事情 - 这可能会在以后产生影响。

所以我的问题是;为什么我会丢失网页概要分析工具栏,如何将其恢复?

非常感谢

1 个答案:

答案 0 :(得分:0)

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

我不知道为什么这意味着来自tokenStorage的令牌是NULL但是当我使用下面问题的接受答案排除了网络探查器时,行为恢复到了我的期望。它可以帮助别人;

Symfony2 : onKernelResponse called twice as MASTER_REQUEST