Перенаправление после переключения пользователя (олицетворение) в Symfony 2 - PullRequest
3 голосов
/ 02 февраля 2012

Я искал везде, но это кажется невозможным.

Мне удалось поймать SwitchEvent из SwitchEventListener и получить как имитатор, так и целевые пользовательские объекты (один имитировался как), но мне бы очень хотелось, основываясь на ролях целевого пользователя, перенаправить запрос на какой-то другой URL. 1005 *

Пример:

У меня есть две области с ограничениями: "/ basic" и "/ elevated", где первая требует ROLE_BASIC, а другая ROLE_ELEVATED. Теперь, если я вошел в систему как пользователь ROLE_ELEVATED и хочу переключиться на пользователя ROLE_BASIC, используя URL:

/basic/?_switch_user=some_basic_user

, что приведет к AccessDeniedException , и я вынужден сначала перейти к:

/?_switch_user=some_basic_user. 

Только после этого я могу перейти к / basic, так как токен был записан в сессию.

Теперь, вопрос , как предполагает субъект: есть ли способ перенаправить пользователя, используя SwitchEvent (или любой другой) после переключения пользователя?

Ответы [ 2 ]

2 голосов
/ 03 сентября 2012

Хорошо, я наконец-то получил доступ к своему компьютеру разработчика и нашел решение этой проблемы.

И, должен сказать, он не такой чистый, как мне хотелось бы, но дата доставки была критической, и тогда это был единственный способ добиться этого.

Итак, в основном я отправил AJAX (хотя я установил async на false) запрос на URL /?_switch_user=some_basic_user, дождался ответа, и в случае успеха я перешел бы к /basic/?_switch_user=some_basic_user URL. Я знаю, это быстро и грязно, и в значительной степени ненадежно ...

Надеюсь, это поможет ....

0 голосов
/ 14 августа 2014

Вы можете просто сгенерировать правильную ссылку для начала:

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

Конечно, URL также может быть создан хелпером path twig:

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