2012-07-11 89 views
1

我需要實現事件監聽器來驗證用戶是否有訪問客戶端項目的權限。Symfony2:頁面事件監聽器

我的路線是這樣的:

/client_a/dashboard/ 
/client_b/dashboard/ 

用戶可能只具有訪問權限的「客戶A」,所以我需要驗證和重定向用戶,如果他/她是不允許看到,項目。

頁面事件偵聽器是最好的方法嗎?如果是這樣,我會聽什麼事件?

或者,如果有更好的方法來處理場景,那會是什麼樣子?

感謝,

JB

回答

2

還有一個很多使用Symfony2提供的本機ACL功能來做到這一點的更好方法。 This "book" entry will explain it pretty clearly.

+0

感謝大家的意見。我很早就看到了ACL功能,但我不清楚上述場景的實現。你能詳細說明一下嗎?謝謝! – jbsound 2012-07-12 01:11:00

+0

當然。對每個客戶端(我假設每個客戶端都有一個類)適用ACL權限(只讀,讀寫[或更簡單的模型])。然後,您可以訪問安全上下文來檢查權限,而不是在client_x路由上設置整個服務:'if($ securityContext-> isGranted('READ',$ clientObject))' – Lusitanian 2012-07-12 01:28:20

0

假設/client_X/dashboard/是不是你想要確保只有路線,你可以監聽kernel.requestevent

你的監聽器可能需要注入安全上下文服務,所以你可以訪問用戶的信息。然後,您只需檢查用戶是否有權訪問某個客戶端並作出相應的反應。

+0

感謝@Arms,這證實了我的想法,但想確保它是最好的方法。我已經有了用於認證和授權的安全上下文,所以我們應該很好。 感謝您加入並給予反饋! – jbsound 2012-07-11 20:17:09