2013-10-29 36 views
0

我知道這個問題已經被問了很多次,但是因爲我正在學習編寫更好的代碼。所以需要一些建議。在codeigniter中管理組權限

假設,我有一個控制器和方法,如下所示:

:Account 
login(); 
home(); 
manage_user(); 
logout(); 

:Company 
add(); 
view(); 
edit(); 
delete(); 

:Service 
add(); 
delete(); 

:Page 
default(); 
about_us(); 
contact_us(); 

有三種類型的用戶組,我需要指定的權限的(例如,系統管理員,公司的用戶和普通用戶。)訪問這些方法/頁面。

我有一個數據庫結構

group(id, name); 
user(id, parent_id, group_id, company_id, username, password, email); 
permission(id, group_id, uri, allowed); 

URI字段可以包含像價值觀,以 「公司/加」, 「服務/加」, 「公司/視圖」 ......等

我有一個自動加載的庫類作爲用戶有一個方法check_permission(),此方法已在MY_Controller構造函數上調用。

所以我的問題,是映射控制器/功能到數據庫字段,以允許訪問是一個很好的做法?或者你有沒有比這更有效的其他選擇?

回答

1

根據我的意見,保存每個用戶的組權限總是好的,在DB &有權限映射表。因此,將來您可以在不觸摸代碼的情況下升級或降級用戶的權限(從管理面板)

此外,您無需在構建器MY_Controller(如果您是)的情況下進行數據庫查詢。當用戶登錄時,您可以將其權限/組值保存在Session中,並繼續使用該值作爲進一步參考。這將節省您的查詢:)