我如何检测用户是否已经在我的网站上注册了社交帐户并且现在想创建一个普通帐户?

How can I detect if a user already singed with a social account on my website and now wants to create a normal account?

我如何检测用户是否已经在我的网站上注册了社交帐户并且现在想创建一个普通帐户?

如何检测变化?

我个人对此的看法:

让用户使用社交身份验证登录,然后在数据库中添加电子邮件(mongo)但没有密码?

此外,当同一个用户想使用相同的电子邮件在网站上注册但没有社交身份验证和密码时,我应该将他重定向到社交身份验证的个人资料信息,如用户名?

举个我说的例子:

用户在 Whosebug

上使用 google+ 签名

然后过了一会儿回来用相同的电子邮件但不同的密码注册一个帐户。

GDPR standpoint can I use passport 来看,处理这种情况的最佳方法是什么?

谢谢

当用户注册社交身份验证时,您还可以提示输入密码(如果您愿意)或创建一个没有密码的帐户。下次当用户使用相同的密码注册时,您应该显示一条错误消息 'Email is taken'。在这种情况下,用户应该会收到一封自动发送的电子邮件,表明有人试图使用他的电子邮件,其中包含有关如何创建此帐户的信息(例如使用 Google+)——作为提醒。

使用社交帐户进行身份验证并不安全,要求输入密码(要求输入带有特殊字符的长密码,upper/lower 大小写字母)会增加一点整体安全性。双因素身份验证将其提升到一个新的水平。对于大多数网站来说,它应该足够安全。在多次尝试不成功后临时阻止帐户很容易实施,并且可以防止暴力破解。

或者,用户应该可以选择通过请求密码恢复 URL 来恢复对其帐户的访问权限,密码恢复将被发送到帐户所附的电子邮件中。然后提示用户输入将为给定帐户保存的密码。因此,用户可以使用 email/password 或用于创建它的社交身份验证来登录他的帐户。

关于 GDRP,用户应该能够:

  • 查看哪些社交帐户与个人资料相关联并能够将其分离
  • 删除他的账号(被遗忘权)
  • 查看他身上存储了哪些数据并导出(数据可移植性)
  • 修改数据(纠正权)
  • opt-out/in 用于获取促销电子邮件
  • 管理广告 Cookie

应提供明确的条款和条件,完整描述存储哪些数据、原因和存储时长。

此外,安全性(2FA、https 等)

简而言之...