2012-01-31 32 views
0

我正在爲許多用戶編寫一個新的應用程序,爲這些角色提供了一些角色和特定的權限。對此,我想創建下表:通過Access實現RBAC的最佳方式

Users (ID,Login, password,..) 
Roles(ID,Rolename) 
User_Roles(User_ID, Role_ID) 
Permissions(ID,PermissionName) 
Permission_Roles(Permission_ID, Role_ID) 

我的想法是建立一個功能,它允許以檢查用戶是否有訪問形式的特定權限。我會通過創建像'canReadFormX','canEditFormX'這樣的權限/規則來做到這一點,它允許我使用一個主函數來檢查和執行這些特定規則和每個表單的函數來調用它。

這是一種方式(或者我確切地瞭解了關於RBAC的所有事情)還是那麼複雜?任何意見非常感謝!

回答

2

對於前三張表格,我看起來很公平,與我們已經設定的類似。

然後您必須解決'操作'問題,即分配權限以使用您的應用程序的操作。我不知道你的「許可」的建議將覆蓋所有的情況下,你必須處理2個大類行動:

  1. 的「開放式形式的行爲,你應該已經確定:您有效地有爲每個表單定義兩個授權級別:'查看'權限和'更新'權限。
  2. 所有其他操作,例如窗體特定的按鈕或菜單,除了打開窗體(執行報表,執行特定計算,自動導入或更新數據等)外,還可以運行特定的操作。

一個解決方案/我的建議是保持這2個表:

  • 一個 '形式' 表
  • 的 '操作' 表

以及相應的鏈接表:

  • 'Form_Role'表
  • 一個'Action_Role'表

有了這樣的配置,你完全覆蓋了。只要相應的操作通過表單上的特定控件或菜單​​訪問,您甚至可以決定哪個角色有權查看特定表單上的特定報表。

兩種形式和動作表是非常有趣的,因爲它們都參與到你的應用程序的元模型......

編輯:順便說一句,如果你是一個域,則可以使用用戶的域憑據來控制他\她對您系統的訪問權限。在這種情況下,您不需要在RBAC系統中存儲密碼。

+0

我非常感謝您的詳細解答。我們不確定我們的客戶希望應用程序的安全性如何(對於現在和將來來說,簡單的權限方法就足夠了),但對於進一步的項目來說,這是一個非常好的主意。我們的客戶也在域中工作,所以這也可以很好,但我不太確定是否需要這樣做。但是再次好的想法,我以前沒有意識到。泰! – Christian 2012-02-01 10:56:24

相關問題