我目前正在與一箇中型團隊合作爲大客戶開發定製內容管理系統。 CMS使用PHP編寫,並遵循MVC模式(自定義)。它是一個模塊化系統,我們或其他開發人員可以在後期將插件添加到系統中。用戶權限; JSON字符串或數據庫表?
系統將包含基於用戶的權限和一系列具有預定義權限的通用角色。要求超級管理員用戶也可以根據用戶修改權限(例如,John Doe可能被定義爲普通用戶,但可以修改內容)。
意見目前分爲關於我們存儲和處理這些權限的最佳方式。一半的開發團隊建議添加一個新的數據庫表,該表將存儲每個用戶的鍵/值對和用戶ID,並將布爾值存儲在每條記錄中。該表的結構將是這樣的:
user_ID: the ID of the user
perm_name: the name of the permission
perm_value: a boolean value dictating whether the user can carry out this action
的建議是,如果有一個特定的權限相關聯的值設置爲0
,或者不存在於表中,用戶沒有所要求的權限。
開發團隊的另一半喜歡將表單中的權限存儲在users
表中的JSON編碼字符串中。因此,例如,我們將存儲以下JSON用於李四):
{
'modifyProducts': 1,
'addProducts': 1,
'addPages': 0
}
然後,我們將能夠使用json_decode()
的User
類中提取權限,例如:
$this->permissions = json_decode($dbval);
我我個人對原因主要有兩個選擇後者傾斜:
- 它是可擴展
- 如果我們需要新的權限,它不需要我們修改數據庫。
簡而言之,這樣的應用程序的最佳方法是什麼?
您是否認爲您需要查詢表以找出哪些用戶可以訪問某個模塊?如果沒有,我認爲將權限保存爲JSON字符串會很好。但是你可能想要確定它在規模上並不會成倍增長。 –
不需要。我們不需要查詢表格以這種方式查找用戶的權限。我唯一關心的是JSON字符串的增長。 – BenM