2012-03-27 79 views
5

我試圖找出如何重定向到某個頁面(這在我的情況是付款頁面)是一個不是招用戶的URL模式沒有有效的訂閱正在運行。Symfony2的:如何在特定頁面上重定向當用戶不允許訪問

我知道我能做到這一點通過把我的一切行動isGranted檢查,但我不喜歡這樣的解決方案,因爲它似乎是給予我的動作量時一個很大的浪費。

我查看了firewall.access_denied_url參數,但我不想將AccessDenied鏈接到付款頁面,因爲,例如,管理頁面訪問被拒絕給任何沒有ROLE_ADMIN的用戶,重定向到付款頁面沒有任何意義。

我已經有一個選民檢查用戶是否有效,並在這種情況下授予訪問權限,但是當用戶嘗試訪問某個特定模式並重定向他/她時,如何設法使用此選民訪問被拒絕?

在此先感謝!

回答

1

您可以使用JMSAopBundle

從技術文檔:

這束增加了AOP功能Symfony2的。

如果你還沒有聽說過AOP,它基本上允許你將一個橫切關注點(例如安全檢查)分成一個專門的類,而不必在它所在的所有地方重複該代碼需要。

換句話說,這可以讓你之前執行自定義代碼,並在你的服務層,或你的控制器某些方法調用之後。您也可以選擇跳過原始方法的調用,或者拋出異常。

+1

爲什麼你不能使用控制器上監聽一個簡單的? – meze 2012-04-04 07:13:53

+1

我想這束通過監聽器,它的工作。當然,你可以通過聽衆自己做到這一點。 – 2012-04-04 08:01:32

6

在應用程序/配置/ security.yml下添加安全:

access_denied_url:/富/ error403

的Symfony將然後重定向該用戶不能訪問/富/ error403所有頁面。

+1

更正,它會轉發(內部子請求) – 2014-05-22 10:55:00

相關問題