在Symfony 2中用户切换(模拟)后重定向

时间:2012-02-02 19:52:23

标签: php symfony impersonation

我到处搜索,但似乎不可能做到。

我能够捕获来自SwitchEvent的{​​{1}}并获取模仿者和目标用户对象(一个被假冒为)但我真的希望,根据目标用户角色将请求重定向到某些其他网址。

示例:

我有两个限制区域:“/ basic”和“/ elevated”,其中第一个需要SwitchEventListener,另一个ROLE_BASIC角色。现在,如果我当前以ROLE_ELEVATED用户身份登录,并希望使用网址切换到某个ROLE_ELEVATED用户:

ROLE_BASIC

会导致 AccessDeniedException ,我不得不首先导航到:

/basic/?_switch_user=some_basic_user

只有在此之后我才能导航到/ basic,因为令牌已写入会话。

现在,问题,正如主题所示:在进行用户切换后,有没有办法使用/?_switch_user=some_basic_user. (或任何其他用户)重定向用户?

2 个答案:

答案 0 :(得分:2)

好的,我终于可以访问我的开发计算机,并查找了解决此问题的方法。

而且,我得说,它并不像我想要的那样干净,但交货日期至关重要,这是当时实现它的唯一途径。

所以,我基本上做的是发送AJAX(尽管我将async设置为false)请求到URL /?_switch_user=some_basic_user,等待答案,如果成功,我会向前导航到/basic/?_switch_user=some_basic_user网址。我知道,这很快,很脏,几乎不可靠......

希望这会有所帮助......

答案 1 :(得分:0)

您可以直接生成正确的链接:

<a href="/basic/?_switch_user=some_basic_user">...</a>

当然,网址也可以由twig的path帮助程序生成:

<a href="{{ path('basic_homepage', { _switch_user: 'some_basic_user' }) }}">...</a>