2012-02-02 78 views
2

我到處搜索,但似乎不可能做的事情。用戶在Symfony 2中切換(模仿)後重定向

我能夠捕獲來自SwitchEventListenerSwitchEvent並獲取模仿和目標用戶對象(其中一個模擬爲),但我真的很希望根據目標用戶角色將請求重定向到其他某個URL。

實施例:

我有兩個限制區域:「/基本」和「/升高的」,其中第一個要求ROLE_BASIC而另一個ROLE_ELEVATED作用。現在,如果我當前登錄的用戶ROLE_ELEVATED並要切換到一些ROLE_BASIC用戶使用網址:

/basic/?_switch_user=some_basic_user 

這將導致AccessDeniedException異常,而我不得不先定位到:

/?_switch_user=some_basic_user. 

只有在此之後,我纔可以導航到/ basic,因爲令牌已寫入會話。

現在,問題,如主題建議:有沒有什麼辦法可以在用戶切換後使用SwitchEvent(或任何其他)重定向用戶?

+0

你有沒有解決過這個問題?我有同樣的問題。看起來''AccessListener'在'SwitchUserListener'之前被調用,所以在'SwitchUser'被調用之前你被鎖定了? – Squazic 2012-08-30 00:16:59

+0

實際上,我做了:)目前,我沒有訪問我的開發計算機,但是像我一樣(明天或之後的那一天)我會在這裏寫我是如何做到的。順便說一句,感謝提醒我關於發佈的問題。我完全忘記了我的問題,所以我絕對需要用合適的答案「關閉」它... – 2012-08-31 19:31:38

+0

我對你的解決方案也很感興趣 – 2012-09-03 14:33:19

回答

2

好吧,我終於可以訪問我的開發計算機,並查找了解決這個問題的方法。

而且,我必須說,它並不像我想要的那樣乾淨,但交貨日期很關鍵,而且這是實現它的唯一方法。

所以,我基本上做的是發送AJAX(雖然,我設置asyncfalse)請求URL /?_switch_user=some_basic_user,等待一個答案,如果成功我會瀏覽着/basic/?_switch_user=some_basic_user URL。我知道,這是快速和骯髒的,而且是非常不可靠的......

希望這有助於....

+0

不錯的解決方案,小黑客,但爲我工作。我希望有一個在 – Swaraj 2014-03-14 02:46:48

0

你可以只生成正確的鏈接開始:

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

中當然,URL也可以由枝的path幫手生成:

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

內建立的重定向路徑引用的問題:這將導致AccessDeniedException – 2015-02-13 20:02:57