我正在使用全方位身份验证,以便用户可以使用 Facebook 或/和 Linkedin 进行身份验证。
现在有些用户会使用相同的电子邮件 ID 进行 db、lnkd 注册。我的用户表强制要求电子邮件对于用户来说应该是唯一的。
因此,如果已通过一个社交网络注册的用户无法通过其他社交网络登录
我正在将 Rails 与 devise 和omni-auth gems 结合使用。
现在有了全方位身份验证和社交登录: 1]用户没有唯一的属性(电子邮件可以是多个等) 2] 无法确定 fb 和 linkedin 登录的同一用户实际上是同一用户。
rails , 一般来说,会将大量用户数据加载到用户对象中,因此如果用户实际上不是用户模型,那么使用 gem 可能会很棘手。
1] 如何创建没有单个唯一元素的用户表?
2] Quora、Airbnb 等网站如何处理此问题?
3] 似乎是一个非常常见的问题。有什么 gem 我可以看看吗?
谢谢!
最佳答案
如果您知道您不会使用任何其他omniauth-* gem,则可以更改用户表以包含字段facebook_uid
和linkedin_uid
。否则,您应该创建一个包含字段 user_id
、provider
和 uid
的通用 authentications
表。然后,您可以更改用户模型以具有 has_many :authentications
关系。
这些 Railscast 应该可以帮助您:
但请注意合并帐户/使用不同提供商授予对同一帐户的访问权限的安全隐患。 See here for more information .
关于ruby-on-rails - 如何合并来自多个社交登录的相同用户数据。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20449805/