2013-02-25 83 views
0

我目前正在爲多個用戶構建一個應用程序,並已獲得用戶權限部分。php - 非常顆粒的用戶權限

該應用程序由大約20個子菜單項組成,每個用戶應根據用戶權限被授予/拒絕訪問權限。

這意味着用戶A可以訪問到子1,4和21,用戶B到子菜單2,3,9,11,20等等等等

這意味着,這將是不可能讓每一個組合成用戶角色,所以我想到了一個簡單的解決方案。

我的第一個想法是將訪問級別保存爲一個字符串。

這樣,我可以使用該字符串中的字符索引來測試每個子菜單。

雖然這可能有效,但我會說它會變得非常混亂,所以我的問題是。

解決此問題的最佳方法是什麼?我正在尋找可維護且直觀的東西,而不需要數據庫上一百萬個新表。

在此先感謝!

+0

你可以使用與OR操作混合在一起的十六進制。結果將是權限字符串。一旦你需要添加另一個權限,你只需添加另一個exadecimal並完成。你必須建立像這樣的十六進制0x1000000,0x2000000,0x4000000,0x8000000 – axel 2013-02-25 08:40:35

+1

在你得到像* string索引那樣的低級別之後......什麼是邏輯?它真的是一個一個的單獨的用戶對項目權限級別嗎?那麼適當的多對多關係數據庫表就可能是答案。 – deceze 2013-02-25 08:40:52

+1

你在尋找某種[ACL](https://en.wikipedia.org/wiki/Access_control_list)嗎? – complex857 2013-02-25 08:46:31

回答

1

我可能會錯過這裏的意思,但是,不能每個子菜單都有一個ID,然後在確定訪問的ID和用戶ID之間有一個連接表,你可以和另一個列連接表訪問級別 - 只能編輯,管理員等)。

根據所需的性能,您可以在第一次訪問請求後爲用戶緩存該響應,或者您可以在每個子菜單請求中查找它。