使用电子邮件地址作为登录ID登录ASP.NET应用程序

3

我正在开发asp.net应用程序的登录组件,并且要求使用电子邮件地址作为登录ID。

对于我的“客户”对象,我应该有一个登录ID和一个电子邮件地址属性,还是只需要电子邮件地址属性?对于SQL数据库,我需要一个登录ID字段还是只需要一个电子邮件地址字段?

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

在深入研究之前,想知道是否有人可以提供建议。

3个回答

4
你可以任意选择使用电子邮件地址作为主键,或者使用另一个外部客户ID字段。
我的个人偏好是使用另一个字段,并将电子邮件地址作为属性。另一个字段可以是guid或其他难以猜测的序列。我会选择这种方式有两个原因:
1.从安全角度来看,如果开发人员做了一些粗心大意的事情,例如在URL或隐藏字段中泄漏了guid,则这比泄漏实际客户电子邮件地址(稍微)不那么有害。
- 使用自动化生成一堆GUID并找到用户/密码匹配的难度要大于购买电子邮件地址列表并将其馈入自动化利用工具。 2.易于维护-人们更改电子邮件地址。如果您使用电子邮件地址作为主键,则必须想出如何转移帐户设置。
我知道问题中没有要求,但您显然正在构建自己的登录机制,而且似乎可能不会过分经验丰富。为了帮助您避免我过去犯过的错误,这里是一些很好的阅读材料:http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html

话虽如此,我曾经使用过两种方式都可以的系统,但我非常讨厌使用电子邮件地址作为登录机制的想法,如果有任何成功的可能性,我会回到业务并尝试更改这个要求。但是很多网站和商业购物车都这样做,所以可能只是我个人的问题。 - David
这是一个很好的观点...因为客户有更改他们的电子邮件地址的能力。 - DNR

1
最佳实践是确保登录ID是唯一的。电子邮件地址确实是唯一的,但如果有人希望更改他们的电子邮件地址,则可能会遇到问题。我建议使用单独的ID而不是电子邮件作为主键。
还要注意,在使用电子邮件地址作为主键时,存在一些性能考虑因素。在这个非常相似的问题中有一些很好的回答:使用电子邮件地址作为主键?

我同意这个建议。+1。不确定为什么有人会踩这个。虽然是简短的回答,但确实是很好的建议。 - David

1

从经验来看,我建议您在行的唯一ID和用户邮件之间使用一个键组合。这两个属性都可以使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接