3

我正在开发我的 asp.net 应用程序的登录组件,部分要求是将电子邮件地址用作登录 ID。

对于我的“客户”对象,我应该有一个 LoginID 和一个 EmailAddress 属性还是只有 EmailAddress?对于 SQL 数据库,我需要一个 LoginID 字段还是只需要一个 EMailAddress 字段?

更新:在“编辑个人资料”页面中,客户可以编辑他们的电子邮件地址。

好奇在我深入研究之前是否有人有建议。

4

3 回答 3

4

您可以按照自己的方式进行操作 - 使用电子邮件地址作为主键,或使用另一个外部客户 ID 字段。

我个人的偏好是使用另一个字段,并将电子邮件地址作为属性。另一个字段可能是一个 guid,或者是一些其他难以猜测的序列。我会走这条路有两个原因:

  1. 从安全的角度来看,如果开发人员做一些草率的事情,比如在 url 或隐藏字段中泄露 guid,它(略)比泄露实际客户电子邮件地址的破坏性要小。
    • 使用自动化来生成一堆 GUID 并找到用户/密码匹配比购买电子邮件地址列表并将其输入自动漏洞利用工具包更难。
  2. 易于维护 - 人们更改电子邮件地址。如果您使用电子邮件地址作为主键,则必须弄清楚如何转移帐户设置。

我知道问题中没有要求这样做,但是您显然是在构建自己的登录机制,听起来您可能不一定经验丰富。为了帮助您避免我个人过去犯过的错误,这里有一些很好的阅读材料:

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

于 2012-07-16T21:18:33.253 回答
1

根据经验,我建议您在行的唯一 ID 和用户邮件之间使用组合键。并且您都可以将它们用作属性。

于 2012-07-16T21:24:01.960 回答
1

最佳做法是确保登录 ID 是唯一的。电子邮件地址确实是独一无二的,但如果有人希望更改他们的电子邮件地址,您可能会遇到问题。我建议使用单独的 ID 而不是电子邮件作为主键。

另请注意,使用电子邮件地址作为主要地址时,有一些性能注意事项。在这个非常相似的问题中有一些很好的回答:使用电子邮件地址作为主键?.

于 2012-07-16T21:16:08.360 回答