2011-03-12 88 views
1

我正在用PHP開發這個應用程序。該應用程序將包含一個管理區域,該區域還將包含員工功能。應用程序的另一部分是面向客戶的網站。在2個數據庫之間共享用戶

行政區域擁有自己的數據庫。面向客戶的網站也有自己的數據庫。

在管理數據庫中,我有一個包含用戶的表,我還計劃實施RBAC,以便用戶可以擁有角色,權限等。

面向客戶的網站還允許客戶註冊,並存儲在客戶網站數據庫的用戶表中。

我需要的是能夠讓員工在客戶網站上登錄。他們還需要擁有權限,以控制他們可以修改的客戶網站的哪些部分以及客戶網站數據庫中哪些行可以更改。

實現此目的的最佳方式是什麼?

乾杯:)

+1

任何理由有2個數據庫? – 2011-03-12 11:34:23

+0

主要原因是我想完全隔離員工和內部數據中的客戶數據。 – F21 2011-03-12 11:39:10

+1

這意味着什麼「完全隔離」?您可以在同一數據庫中設置權限 – 2011-03-12 11:42:00

回答

0

你可以做這樣的事情:

$sql = "SELECT * FROM employeedb.employee_user_table WHERE employee_id = '???'"; 

由於從線程啓動評論的問題。對於兩個用戶表,您可以使用如下解決方案:

  • 創建新表。例如:global_user_table與字段:

    • USER_ID
    • table_source(真實表源)
    • is_special_user(或類似的東西)
    • additional_field1
    • additional_field2
    • 等,等等
  • 每次用戶登錄時,請檢查此表並將session_source存儲在會話中,以備後用。

+0

這就是我現在所傾向的解決方案。在網站的表格中,我們可以有普通用戶,或者我們可以在僱員數據庫中包含用戶標識的「特殊用戶」。有了這條信息,我們首先對網站用戶進行身份驗證,看看是否有匹配。如果我們不這樣做,我們會對僱員數據庫進行身份驗證以獲取用戶標識。然後我們將用戶ID與客戶數據庫中的「特殊用戶」進行匹配,以查看他們是否有權訪問該網站。在這種情況下,可以針對「特殊用戶」存儲客戶站點的權限。 – F21 2011-03-12 11:57:25

+0

雖然上面的方法看起來非常複雜。 – F21 2011-03-12 11:57:57

+0

更新了我的答案 – ariefbayu 2011-03-12 13:36:14

1

我會建議總是在可能的情況下合併處理相同概念的表(此處的用戶)。

這裏的問題是數據訪問安全,無論您的數據如何存儲(一個或兩個表,一個或兩個數據庫)。

隨着MySQL的(和許多其他常見的DBMS),您可以:

  • 創建MySQL賬戶將只能訪問某些表的訪問,就只有它的一些操作(例如,只選擇),訪問只有一些列等

  • 從MySQL帳戶隱藏一個表,並只給這個表上的一個視圖(篩選列/表結果)的訪問權限。

無論是你的數據結構,你將需要檢查的一些員工數據(登錄名,密碼,權限等),你的代碼必須使用有足夠權限應該是一個MySQL賬戶。

因此,我建議您將用戶放在一張表中,添加表格來描述角色(員工,客戶等)和明智的代碼。

記住,解決單獨數據庫設計數據訪問安全問題。數據訪問安全不應該導致您在數據庫設計中進行不合邏輯的選擇。

相關問題