2013-03-11 119 views
0

我正在開發一個涉及具有層級角色的用戶的Symfony2應用程序。現在,我可以註冊,恢復和登錄到應用程序中,而不會出現問題,因爲我已經實現了Symfony2文檔中描述的角色和用戶。保護Symfony2應用程序

此時,我開發了一些CRUD,以便能夠管理應用程序中的對象,但在當前的實現中,我必須檢查當前用戶角色以便讓他或不運行「選定」操作。我的意思是,在每個控制器中,我獲得安全上下文,然後用戶對象和檢查權限,然後有時我需要檢查當前用戶是數據的所有者 - 即如果用戶有客戶端,我需要檢查url傳遞變量/ id /什麼擁有/屬於當前用戶 - 然後拒絕訪問或不。

所以,就我習慣並感覺舒適開發上述應用程序而言,我想知道是否有更好的方法或Symfony2方法,我可以用標準或更理解的方式管理角色和數據未來的開發人員不需要通過每一個如果或檢查內部控制器+行動。我還想指出,我將能夠定製如何獲取或加載數據或對象,所以我可以優化SQL在後臺運行。

+0

沒有人知道嗎?我想過看看Symfony ACL,但我不知道他們是否可以給我想找的東西。謝謝! – user846226 2013-03-27 20:20:54

+0

SonataAdminBundle非常適合CRUD,雖然有相當的學習曲線。至於安全性:http://stackoverflow.com/questions/16656759/best-practice-to-allow-access-to-owner-user-and-admins-only/16657093#16657093 – 2013-12-05 00:26:19

回答

0

Symfony ACLs正是您所需要的。您可以將訪問權限(即OWNER,EDIT,VIEW等)分配給單個用戶或分配給具有特定角色(或兩者)的所有用戶。

如果ACL太複雜以至於不能滿足您的需求,那麼替代方法將是使用自定義Security Voter