我创建一个网络应用程序,需要注册/认证,并且我正在考虑使用一个电子邮件地址作为唯一的用户标识。这里有什么我看见的优点和缺点(最新的答复):

优点

  1. 一个较少的领域填写在登记期间(它只是将电子邮件地址,密码和验证密码)。我是个大风扇的简约的注册。

  2. 一个电子邮件地址是更容易记住。(谢谢 Mitch, 杰里米)

  3. 你不必担心你最喜欢的用户名正在采取的已经你是唯一一个使用你的电子邮件地址。(谢谢 TStamper)

  1. 用户有多种类型,每次他们登录。

  2. 什么样的用户如果想多个账户?他们会需要一个电子邮件地址。(我甚至想让用户能够创建多个账户?)

  3. 易于为潜在的攻击者猜测(如果他们知道目标的电子邮件地址,他们知道login id)。(谢谢 Vasil)

  4. 用户可能会使用相同的密码,他们使用其电子邮件帐户,这是糟糕的安全。(谢谢 托马斯)

  5. 如果你改变了电子邮件地址常常可能很难记得你用来签署了一个网站经过长时间的沉寂.(谢谢 软件的猴子)

  6. 一个黑客能垃圾邮件登记表格和使用"电子邮件已经采取的"应对产生一系列有效的电子邮件。(谢谢 David)

  7. 不是每个人都有一个电子邮件地址。(谢谢 尼古拉斯)

如果我跟电子邮件作为id,我将提供一个机制,允许它改变,在事件用户更改地址。在这种情况下,用户就不会发布的内容要一个公共网站,这样一个单独的用户名不会是必要的,以保护电子邮件地址(但它是什么,以考虑其他的站点)。

另一种选择是实施OpenID(这是一个整体的其他辩论).

这似乎是工作进谷歌,但他们的服务是紧密集成。什么我错过了我的分析?你有何建议?没有任何人有经验的分享?

最后编辑

感谢你们所有人对你的反应。我已经决定使用电子邮件作为身份证件,但随后允许建立一个登录用户名的目的之后登记。这可一点灵活性,同时保持登记应尽可能短。它还可以防止的问题时,用户更改的电子邮件地址(他们可以登录在自己的用户名和更新它)。我也将被执行的方法来防止强迫的电子邮件地址的注册和登录系统(主要是一个冷却期经过反复尝试).

有帮助吗?

解决方案

我倾向于不喜欢亲/con列出,而不是试着想想好处和挑战。

挑战:

一些用户将受到诱惑,用自己的电子邮件地址,从他们的ISP。链接到一封电子邮件单独的,可能是困难的用户是谁忘记更新其电子邮件中的所有网站,他们已经签署了前他们改变互联网服务供应商。

取而代之的是:

你应该考虑允许用户提供的多个地址,以及用户选择的id,然后让用户决定他们想要什么他们希望做的。也许还可考虑允许用户提供一个OpenID帐户。

其他提示

就个人而言,我更喜欢只是使用我的电子邮件地址作为一个用户名。这是一个小的是要记住,我永远不必担心我的首选的名称已经采取。

只是我的2美分!

我想你错过了一个临:

用户都可能记得他们的电子邮件地址;和电子邮件地址都是独一无二的,他们不必担心他们的优选用户名正在采取的。

  1. 当使用同一密码的电子邮件帐户,损害一个自动意味着会损害其他。

作为用户的网站,我可以告诉你,我讨厌记忆不必要的用户名。我不要使用一个独特的处理或任何东西这样我就可以永远记得这变我的名字我用,是不是已经采取。我宁愿种类型我的电子邮件地址。

此外,我喜欢OpenID.

CON:不是每个人都有一个电子邮件地址。考虑,如果你的数据库是访问由内部应用程序。如果你是运行一个商店的人 打电话和通过电话和拒绝提供一个电子邮件地址。因此,虽然具有一个电子邮件地址作为默认的用户标识是凉爽,一定要让候补委员获得进入该系统。(当然,这取决于下文。)

学会了这一困难的方式。

一个安装你可能想要考虑:有一个用户名和电子邮件。电子邮件用于登录和总是保密的,用户名是用来识别用户在任何公共交互作用,例如发布评论。它风略更安全的,因为两部分的用户登录凭据是保密的,而如果使用的用户名都登录和共识,有一半的登录名是已知的。

我绝对同意你关于具有最小的登记对于大多数情况下,但这取决于你在做什么你可能需要的平衡,反对增加安全用户使用。四个领域是不是粗暴的注册,(用户名、电子邮件、口令,确认口令),而如果你感觉特别是冒险的,你可以把它割下来的三个通过删除确认密码领域,或者两个通过电子邮件他们密码,他们可以改变之后。

PRO

人们讨厌具有创造一个独特的名称符合其身份证和尚未注册为一个网站..所以这就是为什么作为用户id 电子邮件地址 是如此的接受。

:TStamper1930,他实际上是要记住,1930年代在结束我的名字,我真的很想

CON: 如果一个黑客可以尝试注册的随机的电子邮件地址集体,他或她将能够找出哪些地址是有效的基础上注册的失败。这是一种策略,可以用来放在一起列出的已知的有效电子邮件地址,这是一个热门商品上的垃圾邮件黑市。

虽然现在,我想想,这是一个问题,影响到任何网站的要求对于一封电子邮件地址作为登记过程的一部分,不管是否有一个单独用户名。但它仍然是一些思考。

CON: 如果我改变我的电子邮件地址,突然,我所有的帐户名称是无效的。我的名称没有改变,但是我的电子邮件往往没有。我偶尔会重新审议的网站后,一些年,一直坚持...什么是我的电子邮件地址两年前的???

坚持以电子邮件地址他们到处都在使用,实际上大多数主要网站使用他们,他们是独特的,因此他们保存的用户在努力寻找一个名字,不是由其他人使用,还用户不会忘记他们的电子邮件地址(在大多数情况下至少:)),这是与不同的用户名,他们将继续忘记,如果他们不访问你的网站非常频繁。

你不应该担心他们被太长,因为所有主要浏览器(即,FF..等等)提供自动完成的,其形式是默认,因此您类型的第一个字母在你的电子邮件你会得到下列表(即。自动完成列表的),你只要按输入整个电子邮件、亲自我几乎从来没有类型的电子邮件地址在全,我总是型的第一个字母然后选择的电子邮件自动完成下列表。此外,如果你允许用户要记住(使用记得我框和持久cookie),这将是另一个原因不要担心它。

我不知道关于你的程序,但是通常用户拥有多个账户并不期望在大多数应用程序。

一个骗局可能是,如果它是一个电子邮件地址登录可以猜到的人和暴力攻击企图。这是不是一个真正的大问题,因为在大多数网站今天的登录名公开显示出来。

的最大的职业是登录的容易记住的这种方式。

一个很好的设置是需要用户名和电子邮件。允许用户登录或电子邮件地址或用户名是非常有用户友好。一个额外的好处是用户可以改变他们的电子邮件地址。它还将允许多个账户为一个电子邮件。

解决你的con项目的电子邮件正在太长的类型在每一个时间。我已经实现的StringScan红宝石图书馆。

require 'strscan'    
def signup!(user, &block)    
self.email = user[:email] unless user[:email].blank?    
str = StringScanner.new(self.email)    
str.scan_until(/@/)    
str.pre_match    
self.login = str.pre_match

等等.

然后只要修改登录的方法,以允许以电子邮件或登录到匹配的密码。

这就像谷歌或mobileme.用户可以选择在他们的电子邮件用户名(ie。用户名,而不是的username@gmail.com.)

如果你不关心强迫你的用户登录到应用程序与Facebook或一些其他社会网络(大多数人似乎并不关心),然后你就可以使用他们的社会网络的电子邮件为他们的'user id'时,引用其他表/文件(MySQL、Mongo、等等)。

我已经注意到的奖励使用社交媒体登录的是,所有安全已经采取由所述社会网络,包括不允许2的用户有相同的电子邮件或用户名在他们的数据库,从而节省你的麻烦具有代码,所有这一切。这只是我个人的偏好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top