我正在考慮實現條件許可的最佳方式,即用戶和團隊是m-to-m。但是每個團隊也與用戶表有一對一的「領導者」關係。Symfony/sfDoctrineGuard有條件許可
爲了簡單起見,假設我們有兩個權限級別「用戶」和「管理員」。然後可以說,只有某些團隊管理任務,即羣組電子郵件,只能由該團隊的領導發送。
目前,每個針對團隊領導者的操作都會查詢數據庫,以檢查當前用戶是團隊領導者(記住用戶可能會領導多個團隊)。我個人不喜歡看到「if($ user-> isLeader($ team))」到處都是。
我已經考慮設置用戶在登錄用戶會話(ala phpBB)時使用的團隊列表,或者使用symfony過濾器來執行相同的操作。
但是,在第一種方法中,如果其他用戶可能會更改團隊的領導者,則數據可能會過時。第二種方法需要對每個頁面加載額外的數據庫查詢。
有什麼更好的點子? 注意:在一個項目中有多個應用程序需要共享相同的權限模型(即後端和api)
這非常接近我所追求的。 我可能會使用memcache實現類似的解決方案。 – xzyfer 2010-09-14 11:29:57