2010-07-09 151 views
2

我們正在嘗試開發一個系統,其中一個人創建一個賬戶,其中用戶名是該人的電子郵件地址。問題是,這個人可以擁有自己獨特的賬戶(他是管理員的地方),加上他人賬戶的「用戶」。MySQL唯一標識符

一個帳戶的「管理員」可以將一個人的電子郵件地址分配給他們的帳戶,併爲該用戶創建一個密碼作爲用戶登錄。

在MySQL中,由於電子郵件地址是唯一標識符,因此我們在嘗試確定將用戶登錄到哪個帳戶時遇到問題。有沒有更好的方法來做到這一點?

很明顯,爲每個人分配的每個帳戶使用唯一的用戶名可以解決此問題,但我們希望使用一個電子郵件地址,因爲它不會記住用戶。

任何幫助,將不勝感激!

+0

帳戶是什麼?用戶帳戶和管理員帳戶有什麼區別?兩者如何相互作用? – Mike 2010-07-09 18:08:51

+0

@Mike這些帳戶是針對網絡應用的。當一個人註冊時,他們輸入他們的登錄信息以及應用程序將用於執行該服務的公司數據。在帳戶註冊時,該用戶成爲「管理員」。該管理員可以將授權的「用戶」分配給該帳戶。這兩種用戶狀態有幾個原因,但最重要的是「管理員」具有完全訪問權限,並且可以編輯信用卡信息和其他「敏感」信息。 「用戶」可以訪問除「敏感」數據以外的大部分功能。 – user387990 2010-07-09 18:49:18

回答

6

分離的擔憂原則應用,分離這兩個功能,(登錄和訪問一個帳戶),使它們是獨立的獨立功能....
用戶登錄,(電子郵件和密碼只是驗證他/她是誰說的他們是)。它不與單個帳戶關聯... 單獨地,將每個帳戶與允許訪問它的那些用戶相關聯。 (在數據庫中,這將是多對多表) 然後,如果用戶是管理員並且有權訪問多個帳戶,那麼向他/她詢問他/她希望訪問哪個帳戶。

這增加了一個好處,即如果您有審計需求,爲了審計目的,您將能夠記錄不只是使用哪個帳戶執行任何業務功能,而是執行該功能的實際用戶......

+0

我的想法。 – 2010-07-09 18:08:16

+0

我也是。這聽起來更像是用戶角色和權限問題,而不是身份驗證或認證問題。 – Mike 2010-07-09 18:13:12

+0

爲了區分應用程序權限,我沒有看到維護單獨的相同帳戶的重點。應用程序需要的角色越多,這種設計方法的缺陷就越明顯。 – 2010-07-09 18:15:12

0

如果有2個賬戶爲同一用戶(E-mail地址),問他想,只是一個想法要記錄哪一個......

+0

是的,這是我們的第一個想法......我們只是希望有一個解決方案,可以讓我們消除這一步驟。 – user387990 2010-07-09 19:17:40

0

你需要給用戶以某種方式告訴其他想要登錄的帳戶。例如,您可以在登錄表單旁邊有一個下拉菜單,用戶可以在登錄時作爲管理員或作爲訪客進行選擇。

否則,您可以在用戶選擇兩個選項的登錄表單之後有第二個屏幕。

在任何情況下,如果你不使用兩個單獨的用戶名(或密碼,順便說一句),你可以不知道哪個帳戶用戶想要登錄,

0

一個帳戶的「管理員」可以將一個人的電子郵件地址分配給他們的帳戶,併爲該用戶創建一個密碼以用戶身份登錄。

在這種情況下,我認爲最好是將用戶移動到另一個表中,說account_users並通過主鍵ID或用戶名與個人表相關聯。這樣一個管理員可以創建許多用戶,即使任何用戶是現有的管理員。不知道這是否是最好的方法?

0

確定在哪個帳戶下登錄的常用方法是擁有帳戶子域。這對於「公司爲中心」的網絡應用程序特別有效。

換句話說,如果用戶擁有公司XYZ的賬戶,他們的賬戶地址可以是companyxyz.webapp.com。該子域可以自動生成或在註冊時選擇。通過帳戶子域,用戶登錄只需在給定帳戶子域內唯一即可。

+0

我想也是這樣做的。唯一的問題是,用戶可能被分配到多個帳戶,可以說6個。用戶將不得不記住6個域 - 而不是6個用戶名......除非他們使用書籤,否則沒有太大的改進。不過這是個不錯的主意。謝謝! – user387990 2010-07-09 19:08:14