【问题标题】:Devise + Omniauth, a provider that does not have a callback phaseDevise + Omniauth,一个没有回调阶段的提供者
【发布时间】:2014-07-30 13:32:20
【问题描述】:

我正在编写一个论坛应用程序,它需要处理本地用户帐户(在数据库中)和远程用户帐户(在不同的服务上)。到目前为止,这是我所拥有的:

  • 当远程用户登录时,我需要创建本地用户(无需密码?),以便跟踪论坛帖子。
  • 我需要编写一个 Omniauth 提供程序来调用远程服务来验证身份验证数据。

现在,远程提供者有一个 API 端点,让我可以通过发送用户名和密码并返回布尔值 (true/false) 来验证用户。我的测试请求如下所示:

POST /authenticate ...other headers... username=mytestuser@testuser.com&password=testuserpassword

回复如下: <boolean>true</boolean>

XML 很容易解析,我遇到的唯一问题是 Omniauth 似乎将提供程序抽象为 request_phasecallback_phase。我的提供商似乎只有一个request_phase。我应该怎么办? Omniauth 是该应用程序的正确工具吗?

【问题讨论】:

    标签: ruby-on-rails devise omniauth


    【解决方案1】:

    我使用自定义设计策略以及httpclient gem 实现了这一点。从那里开始,它就像调用 API 端点并解析 XML 以检查是否有有效用户尝试登录一样简单。如果用户之前从未登录过,我会在我这边创建无密码用户.

    【讨论】:

    • 你有没有机会开源你为实现这个而创建的代码?
    • @ryanfelton 您必须调整第 5 行和第 10 行,但我能够在我的 config/initializers/devise.rb 中添加类似的内容,并且效果很好:gist.github.com/fwilson42/737a5089caa62d855fb9
    猜你喜欢
    • 2014-12-10
    • 2014-02-10
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多