2012-08-26 42 views
0

我正在一個門戶上工作,用戶角色很少。我一直想知道處理它們的最好方法是什麼。我已經爲用戶和客戶創建了分離的表格,但客戶會希望這些功能作爲用戶和用戶也可以成爲客戶。處理用戶角色的高效方式

我也不想做出許多關節,所以我的想法是這樣的:

我將有4個不同的用戶角色(至少目前如此)如下:

user 
client 
reviewer 
admin 

我會爲每個角色分配「id」。與此同時,我將使用這些角色在MySQL中保留表。它會是這樣的:

1 - admin 
2 - reviewer 
3 - client 
4 - user 

此表將只在創建用戶時使用,以獲得用戶「權限」的代碼。所以我們假設有一個人是用戶和評論者。他的角色將是24

login password email role  created 
---------------------------------------------------------- 
guy password [email protected] 24 2012-12-08 23:12:30 

我認爲這可能工作得很好,但還是要問,如果你們覺得這是很好的,有效的解決方案。 謝謝

回答

1

做到這一點的另一種方法是有一個多對多的USER_ROLE表,其中對於你的例子人將有以下entires。

login role 
guy 2 
guy 4 

我通常更喜歡這種跟蹤角色的方法。在這種情況下對這個表的連接應該是快速和無痛的,特別是如果你轉向使用user_id而不是登錄名,並且適當地編制索引。

+0

當然還有將user_id說明,我只是寫了快例子。我也在想這個,但還是不太喜歡那裏的加入。 – Tom

0

你正在定義的是一個基於角色的訪問控制系統(我建議在此查找資源)。 RBAC系統將爲用戶提供單獨的表格,併爲角色提供另一個表格。用戶和角色之間會存在多對多的關係。此外,您將權限表連接到另一個多對多關係中的角色。附圖說明了如何實現這個系統:RBAC SYSTEM IN MYSQL

類似的問題被問前:How to design a hierarchical role based access control system