Devise + Omniauth,一个没有回调阶段的提供商

时间:2014-07-26 19:57:53

标签: ruby-on-rails devise omniauth

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

  • 当远程用户登录时,我需要创建本地用户(没有密码?),因此我可以跟踪论坛帖子。
  • 我需要编写一个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是应用程序的正确工具吗?

1 个答案:

答案 0 :(得分:2)

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