6

我的最终目标是让用户同时拥有多个第 3 方身份验证。

现在,我正在使用 Devise 创建用户。用户可以通过电子邮件、脸书或谷歌注册,并且可以使用。但是现在,在他们已经注册之后,我还需要他们通过 youtube 或 soundcloud 进行验证。所以用户是用设计创建的,但我还需要他们用其他东西来验证。

由于 Devise 出于自己的目的占用了omniauth,因此我不能同时使用omniauth。

在我看来,我有三个选择:

  • 尝试猴子补丁设计并让它允许同时对一个用户进行多个身份验证
  • 在与当前设计实现相邻的一侧手动执行 oauth
  • Scrap 设计并做一些不同的事情

我将不胜感激任何建议或其他选择

4

2 回答 2

1

尝试猴子补丁设计并让它在一次使用中同时允许多个身份验证

你不需要猴子补丁设计——你可以拥有自己的 oauth 控制器

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

  def facebook
    # handle if already a twitter user
    # handle if a new user
    # use the `sign_in user` to sign_in the user
  end

  def twitter
    # handle if already a facebook user
    # handle if a new user
  end
end

并在路线中使用它

devise_for :user, 
         :controllers => {
           :omniauth_callbacks => "users/omniauth_callbacks"
         }
于 2013-02-15T22:17:40.047 回答
1

我认为这可能是您需要的:http: //blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-single-sign-on/

他们也开源了他们的代码!

提供者:https ://github.com/joshsoftware/sso-devise-omniauth-provider 客户端:https ://github.com/joshsoftware/sso-devise-omniauth-client

或者更好的是,看看这个:http: //communityguides.heroku.com/articles/16

于 2013-02-16T00:25:41.060 回答