2009-08-26 148 views
4

這個問題不是關於RBAC系統本身的數據庫設計,而是如何在該Web應用程序允許其用戶提交內容時將該數據庫與特定於應用程序的數據庫結合使用。基於角色的訪問控制數據庫設計

就我看來,RBAC應該很容易適用於一個簡單的後端管理應用程序,在該應用程序中,員工可以添加和更新記錄 - 例如,在線商店通常不會提供用戶提交的內容。這兩個數據庫可以保持獨立。但是,我不確定如何將我的RBAC設計與允許其用戶提交內容的網站/應用程序重用。我會在兩個數據庫中有兩個用戶表,這些表需要添加/更新記錄的權限。

  1. 是否將我的RBAC數據庫併入網站數據庫並共享用戶表?

  2. 我是否將兩者分開?

  3. 做點別的?

如果選擇2做我:

  • (A)複製從網站數據庫中的用戶到RBAC用戶表

  • (B)創建的用戶表的關係在網站數據庫中

  • (C)在網站數據庫中爲網站用戶創建一個新的RBAC系統,併爲管理員用戶擁有單獨的RBAC?

A作爲我複製數據,但似乎實現非常簡單,似乎不好。 B似乎很難創建與兩個單獨的用戶表的關係。 C也是重複的,但我可以在不影響「管理員」RBAC的情況下大量定製此RBAC。

我基本上想讓我的RBAC系統儘可能重複使用,並且讓應用程序特定的用戶能夠提交內容讓我的頭腦變得有些困難。

我的這個小RBAC系統主要是我學習的一種方式,所以請不要通用「你應該使用框架x/y/z」。使用我最近發現的一個術語,我有點輪胎書呆子,並且每當我好奇時都想重新發明它們! :)

我將爲我的網站使用MySQL和PHP,但這不應該因爲它是我在這裏問的數據庫設計。

如果我的問題不明確,請讓我知道,我會進一步解釋。謝謝大家的時間。

回答

0

不知道你的完整實現,我傾向於你的第一個解決方案,只使用一個用戶表。然後在線應用程序可以查詢RBAC以確定用戶是否允許。我不清楚的是將需要多少應用程序屬性以及它們將被存儲在何處。如果您的用戶屬性需要存儲在數據庫中,那麼您可以在應用程序中創建一個用戶表,並使用對RBAC的外鍵引用來確定訪問權限,而不將這些數據存儲在兩個地方。這會有多複雜取決於您可以添加和更新用戶及其屬性的不同位置。物理數據庫結構非常依賴於您的業務規則和體系結構,但您的邏輯設計是將數據保存在一個表中。

相關問題