我正在開發的當前項目是一個Web應用程序,它必須在自己的服務器上交付給多個客戶。該網站需要一個權限控制系統,用於管理用戶可以或不可以使用的區域和功能。
至於知道,我正在設計一個數據庫驅動的權限系統,權限存儲在數據庫中。每個用戶都有一個角色。該角色定義可用的列表權限。該模式是這樣的:網站權限系統的最佳實踐
用戶表
1. USER_ID
2名
3. ROLE_ID
角色表
1. ROLE_ID
2名
權限表
1. permission_id
2名
roles_permissions表:
1. ROLE_ID
2. permission_id
在我能賣登錄用戶的角色和權限的代碼,並檢查用戶能夠執行操作或看到像這樣的區域:
if($user->hasPermission('Edit HR')) {
// let user see the editing HR section
}
hasPermission會檢查用戶是否有權限一個名字'編輯人力資源',並將返回所需的結果。我看到的問題是數據庫表必須具有名稱完全是「編輯HR」而不是「Edit_hr」或「HR編輯」的權限記錄。所以我必須確保權限系統的數據與應用程序使用的每個數據庫相同。哪種讓我覺得這是一個有缺陷的設計,需要重新設計。創建新的部分和功能還需要更新所有的數據庫,這也使我成爲一隻可悲的熊貓。
因此,基本上,問題是:設計數據庫驅動的權限系統並在多個數據庫上保持數據庫完整性的最佳方式是什麼?
要澄清的設計,我會打電話的表'role','resource'和'permission'。權限表將包含「role_id」和「resource_id」的外鍵,如果存在任何條目,則知道該角色已連接到該資源。另外,由於您已經擁有名爲'[table] _id'的FK,我會調用每個PK'id'。 – Xeoncross
用戶只能有一個角色?那麼一個類別的編輯和另一個類別的審稿人呢? :) –
這是很好的問題是,當你的角色,工藝在混合,你需要解釋一下,如果用戶不需要只從一個用戶添加更多的權限,以一個用戶或用戶組或排除permison,你想獲得這個方案這一翻譯:http://stackoverflow.com/questions/37466333/php-mysql-sesion-good-practice-user-management-and-permissions –