这个问题与设置设计有点不同:omniauthable with multiple providers(facebook等)。情况更复杂。
仅供参考 - 我使用的是Rails 3.2.16
我有两种用户 - 安全(使用电话号码+短信验证码首次登录)和不安全(可以使用提供商或简单的电子邮件/密码首次登录)。首次登录后,两种用户都被迫选择一个电子邮件和密码(以防他们的Facebook帐户被删除或其他东西)。这两个用户都可以进入他们的帐户并选择"关联"更多提供商的帐户。随后,这两个用户都可以通过他们选择的任何内容登录 - 安全用户可以登录其他电话号码。
现在,将多个提供者与用户相关联是我理解的 - 您创建了Identities模型并将其与使用Omniauth回调的用户相关联。我不明白的是:
我想继续使用Devise(如果可能)进行电子邮件/密码验证。它给了我很好的东西,如"延伸"等。通过Facebook(Omniauth)成功登录后,如何通过电子邮件确认步骤(即Devise)强制创建电子邮件/密码。在完成此操作之前,用户应该无法继续操作。这是Devise和Omniauth的相互作用,我不明白。我知道Devise和Omniauth可以共存,因为它们基本上生活在不同的路线上。
更棘手 - 我们有两种完全不同的第一次认证方式(例如SMS代码)的方式是拥有不同的模型。 Rolify和Cancan在这里不是很有帮助。但是,这意味着在成功进行身份验证时,会有两个单独的warden会话变量" warden.user.secureuser"和#34; warden.user.insecureuser"。这导致应用有人以两个单独的类型用户同时登录。我该如何防止这种情况?我知道这不是真的错了,但我宁愿不这样做。 仅供参考 - 我在这两类用户之间没有任何共同路线。例如,insecureuser的所有内容都存在于" / insecureuser / "反之亦然" / secureuser / "。