5

我的问题和这个几乎一样

唯一的区别是用户可以选择注册(提供他的用户名和密码)。用户应该只注册一个帐户,如果用户有相同的电子邮件我合并了这些帐户。我的应用程序有另一种登录方法,即通过 Facebook。

我基本上做的是

  • 当用户第一次访问for站点时,他或她会创建一个用户帐户,在创建第三方身份记录后,它只有用户名、密码和邮件地址,然后与本地帐户配对。但是用户表将有一个空的用户名和密码,但电子邮件将填充我们从第三方服务提供商处检索到的用户电子邮件

第二个场景

  • 用户尝试注册到该站点。检查邮箱是否存在合并本地创建的账户和第三方账户。

现在我的问题是我的方法安全可靠吗?如果不是合并帐户的最佳方法是什么,同时如果用户使用相同的电子邮件(来自第三方帐户的电子邮件)注册并且他有第三方帐户,那么这些帐户将被合并?

4

3 回答 3

3

我将提供两组行为,一组在登录时,另一组在注销时。

登录后,您可以链接到新的第三方帐户。例如,您使用电子邮件地址和密码注册,然后登录,然后您可以链接您的 Facebook 帐户。要将您授权的 Facebook 帐户与 Facebook 关联,然后将 Facebook 信息存储在该用户帐户记录中。

注销时,您必须使用现有凭据登录。如果在注销时尝试使用现有电子邮件地址创建帐户,您要么阻止登录,说“具有该电子邮件地址的帐户已存在”,要么立即要求用户登录以合并帐户(在这种情况下,它与链接外部帐户时的登录情况类似,只是身份验证操作的顺序相反)。

如果以上内容不清楚,我建议使用单个用户帐户以及记录该帐户与外部帐户之间联系的方法。您可以在 NoSQL 中执行此操作,只需将字段添加到用户文档,或者您可以通过使用一个表示外部帐户的表以将它们链接到用户 ID 的外键来执行此操作。

于 2013-04-27T23:32:39.907 回答
3

在我看来,只有一个帐户。一封电子邮件,一个帐户期间。可能有与该帐户相关联的各种属性,例如链接到一组 OAuth 凭据等。但基本上只有一个帐户。如果您的用户使用社交帐户注册过一次,然后尝试在您的网站上再次注册,请将他们发送到他们第一次注册时使用的社交网站并要求他们在那里登录。然后将它们自动登录到您的站点。如果用户在您的网站上有一个帐户,然后尝试使用社交帐户再次注册,请告诉他们您已经在该网站上拥有一个帐户并要求他们登录。恕我直言,保留单独的帐户并尝试合并它们是一个混乱的想法。

于 2013-04-23T16:34:16.353 回答
-1

注意不要使用 oAuth 2.0 !主要作者本人辞职,因为它不如 1.0 版本安全。

您应该更喜欢 oAuth 1.0 或 OpenID。

您还可以查看来自 Mozilla 的 Persona

于 2013-05-01T08:42:49.300 回答