2014-01-06 83 views
1

我在問自己哪個是在Web應用程序中訪問setter的最佳方式。訪問symfony中的setter 2 2

基本例如:

  • 帶具有性能
  • 只有樂隊成員有獲得改變這些

這裏開始的問題,什麼是提供最好的方法。

我通常使用的方式是編寫一個服務類,它在每個方法中都被調用。 例如:

public function changePropertyAction ($bandname) 
{ 
    if(!BandAuthService::isBandMember($bandname)) { 
     // redirect 
    } 
    // change the property to a new one 
} 

public function changeAnotherPropertyAction($foo) 
{ 
    if(!FooAuthService::isFooMember($foo)) { 
     // redirect again 
    } 
} 

有另一種方式,這種方式在每一個操作的用戶來電時,系統必須檢查它是否是一個bandmember?

回答

3

管理對象權限的好方法是使用ACL(訪問控制列表)。 ACL可以看作是Symfony角色系統,但應用於數據庫中的每個對象。

因此,DB中的每條記錄都有一個所有者,它擁有所有的訪問權限;但你也可以給一些權利給其他用戶,如查看,編輯,...

最後,你喜歡的東西正確的檢查:

$securityContext->isGranted('EDIT', $band) 

你可以找到一個簡單的演示here和更多細節上的ACL here