2013-04-16 51 views
0

在具有3個級別的登錄系統中,有什麼更好的方法在數據庫和登錄系統中創建表?在具有3個級別的登錄系統中,有什麼更好的方法在數據庫和登錄系統中創建表?

這三個級別是:'客戶','額外'和'管理員'。

'客戶'將訪問您的所有帳戶信息,您可以註冊'其他'。 「附加」只能訪問一些細節。 '管理員'可以註冊新的'客戶'。

1)只有一個登錄URL並讓系統檢查用戶級別然後指向正確的頁面是否安全?

網站。 com/login 如果額外的OR客戶端將指向 - >站點。 com/client 如果管理員將直接指向站點。 com/admin

2)或者最好的方法是爲客戶端和附加站點創建一個日誌文件。 com/client/login和其他管理員站點。 com/admin/login

3)我以爲我會創建一個只包含所有用戶的ID,登錄名,密碼和LEVEL級別的表:客戶端,附加和管理員,並查詢此表以查看用戶是否存在以及哪些資源可用,然後根據LEVEL在其他表中查找數據,這是安全的做法嗎?

4)我還想過使用INNER JOIN在3個表中進行掃描,看看用戶是否有權訪問系統。讓表中的ca級數據完全分開。這是一個有效的選擇?

其他想法?備擇方案?

回答

1

這是一個相當開放的問題。你絕對想要#1而不是#2。您不想保持2種登錄方式。只有1登錄頁面,並決定用戶登錄後應該去的地方。

當談到#3或#4,我認爲你會走得更遠#3。讓你的表是這樣的:

ID, login, password, client_permission_level, admin_permission_level 

client_permission_level 1 = 「額外」 client_permission_level 2 = 「客戶端」 admin_permission_level 0 = 「不管理」 admin_permission_level 1 = 「管理員」

您可以做出更復雜的系統,但聽起來這會讓你開始。並且,您將能夠定義更多級別,如「超級管理員= 2」或「超級客戶端= 3」

1
  1. 如果這是您想要的方式,那麼單個登錄URL就足夠了。您應該將用戶的授權級別與其身份驗證(他們的登錄名,電子郵件等)關聯起來。一旦他們通過身份驗證(登錄),您可以從數據庫獲得授權並將該信息存儲在會話中。用戶不能觸摸它。

  2. 我沒有看到任何好處,但你可以做到這一點,如果你想。您仍然需要檢查每個頁面上的授權級別,以確定登錄用戶是否能夠看到該頁面。

  3. 這不是不安全的任何特定的方式,但它似乎有你可能想要的關係完整性。

  4. 這並沒有多大區別,但是爲每個訪問級別分別設置一個表是沒有意義的。除非訪問功能相互排斥,否則最多需要兩個表(一個用於用戶,一個用於級別)。如果它們互相排斥,則您需要第三個用戶級別映射表,但對您而言似乎並非如此。