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

问题描述 投票:2回答:1

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

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

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

进行研究后,似乎与kernel.request或kernel.controller事件绑定的事件订阅者是执行此操作的正确方法。

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

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

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

非常感谢

symfony events listener symfony-3.3
1个回答
0
投票

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

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

Symfony2 : onKernelResponse called twice as MASTER_REQUEST

© www.soinside.com 2019 - 2024. All rights reserved.