在我的网站上管理 google 登录和普通用户登录的最佳方式

Best way to manage google sign-in and regular user sign-in on my website

我有一个网站,用户可以在其中创建一个帐户,给出基本的用户信息,如“用户名”、“密码”、“电子邮件”等...

现在,我想实现 google 登录,但我不确定后端将如何管理。 我应该为 google 用户创建一个不同的 table,还是将其合并到原始用户 table,但问题是 google 登录没有与之关联的密码, 我是让密码不需要,生成随机密码,还是让用户创建密码?

如果用户想通过常规方式使用相同的电子邮件注册,但它已经使用了 google 登录,那么该帐户是否应该与原始帐户合并,这样他就不会丢失他的数据?

您在这里描述的是许多网站都存在的问题。我认为没有正确或错误的答案。

根据我的经验: 我建议在您的用户 table 中保留一个列来指示身份验证类型。对于使用密码登录的用户,它可以是“密码”,对于使用 google 用户登录的用户,它可以是“google”。

只有当用户实际使用密码验证机制时,才应填充密码列。这是出于安全目的,以确保通过其他方式验证的帐户不会发生帐户接管。

如果你想允许用户“使用密码登录”,那么你可以实现一个流程,它将:

  • 向用户发送一封确认电子邮件(这样您就知道登录的人可以访问该邮件帐户)
  • 当用户单击 link 时要求用户指定密码
  • 然后保存密码并更新身份验证类型。

此外 - 反过来 - 当您有一个拥有密码的用户然后开始单击“使用 google 登录”时 - 您可能还应该有一个流程来迁移用户以使用google.