Skip to main content
 首页 » 编程设计

ruby-on-rails之OmniAuth:防止同一用户的多个帐户

2024年10月25日15del

我有几个 Rails 应用程序希望与 OmniAuth 集成,但是我想先解决一个概念上的问题。考虑以下场景:

  • 您的应用程序 Foo 支持通过 Twitter 和 Facebook 进行 OmniAuth 登录。
  • 乔来到您的网站并通过他的 Twitter 帐户登录。这将在 Foo 上创建一个新用户并将其与此新 Twitter 授权相关联。
  • Joe 从 Foo 注销,并在六个月内忘记了该站点。
  • Joe 回到 Foo,不记得他之前登录过 Twitter。
  • 乔使用 Facebook 登录。由于他尚未通过其原始 Twitter 授权登录,因此无法检测到他实际上是同一个 Joe,并创建了一个新帐户。
  • Joe 发现了他的旧帐户,现在对他的旧内容与这个旧帐户相关联并且他无法交替登录 Twitter 和 Facebook 感到沮丧。

  • 由于 Twitter 不向 Foo 提供电子邮件地址,因此没有用于检测两个 Joe 是同一个 Joe 的通用标识符。您可以决定仅支持向您提供用户电子邮件地址的提供商,但如果用户在不同提供商的不同电子邮件地址注册,这将无济于事。

    我能想到的唯一其他解决方案是为用户提供某种合并两个现有帐户的方法。与使用 OmniAuth 时其他一切相对容易相比,这是一个令人头疼的问题。如果这是唯一的解决方案,是否有人遇到过指南/教程显示如何完成此操作的示例?鉴于 OmniAuth 的流行,我很惊讶这个问题没有得到更多关注。

    谢谢!

    请您参考如下方法:

    你的直觉是正确的。你必须为你的用户提供一个合并工具......或者你可以忽略这个问题。