2012-07-16 27 views
3

我正在處理我的asp.net應用程序的登錄組件,部分要求是將使用電子郵件地址作爲loginID。使用電子郵件地址作爲loginID登錄到asp.net應用程序

對於我的「客戶」對象,我是否應該有一個EmailAddress屬性或EmailAddress的LoginID &?對於SQL數據庫,我需要一個LoginID字段還是一個EMailAddress字段?

更新:在「編輯配置文件」頁面中,客戶可以編輯他們的電子郵件地址。

好奇,如果有人有建議,然後我會深入這一點。

回答

4

您可以按照您想要的方式 - 將電子郵件地址用作主鍵,或使用其他外部客戶ID字段。

我個人的偏好是使用其他字段,並將電子郵件地址作爲屬性。另一個領域可能是一個guid或其他難以猜測的序列。我會走這條路的原因有兩個:

  1. 從安全角度來看,如果一個開發人員做了馬虎像漏一個以URL或隱藏字段的GUID,它的(略)損害較小比泄漏實際客戶的電子郵件地址。
    • 使用自動化生成一串GUID並找到用戶/密碼匹配比購買電子郵件地址列表更困難,並將這些地址提供給自動化漏洞套件。
  2. 易於維護 - 人們更改電子郵件地址。如果您使用電子郵件地址作爲主鍵,則必須弄清楚如何傳輸帳戶設置。

我知道這不是在問問題的,但你顯然建立自己的登錄機制,這聽起來像你可能不一定過於經歷。在幫助你避免我個人在過去犯過錯誤的興趣,這裏的一些良好的閱讀:

http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html

+0

這就是說,我曾經使用過以任何方式工作的系統,而且我討厭使用電子郵件地址作爲登錄機制的想法,以至於我會回到業務並嘗試更改此要求,如果有任何可能的話成功。但是很多網站和商業購物車都這樣做,所以這可能只是我。 – David 2012-07-16 21:21:37

+0

這是一個很好的觀點......因爲客戶有能力更改他們的電子郵件地址。 – DotNetRookie 2012-07-16 21:22:42

1

最好的做法是確保登錄ID是唯一的。電子郵件地址確實是唯一的,但如果有人希望更改其電子郵件地址,則可能會遇到問題。我建議使用單獨的ID而不是電子郵件作爲主鍵。

另請注意,將電子郵件地址用作主要參數時需要注意一些性能問題。在這個非常相似的問題中有一些很好的回答:Use email address as primary key?

+0

FYI @Ryan ...我沒有投票你....感謝你的迴應。 – DotNetRookie 2012-07-16 21:18:45

+0

我同意這個建議。 +1。不知道爲什麼有人會低估這一點。這是一個簡短的答案,但很好的建議。 – David 2012-07-16 21:22:51

1

從以往的經驗,我建議您使用該行的唯一ID和用戶之間的組合鍵郵件。並且你可以將它們用作屬性。

相關問題