2014-07-26 30 views
2

我正在編寫一個論壇應用程序,它需要處理本地用戶帳戶(在數據庫中)以及遠程用戶帳戶(在不同的服務上)。這是我到目前爲止:Devise + Omniauth,沒有回調階段的供應商

  • 我需要在遠程用戶登錄時創建本地用戶(無密碼?),所以我可以跟蹤論壇帖子。
  • 我需要編寫一個Omniauth提供程序來調用遠程服務來驗證身份驗證數據。

現在,遠程提供程序有一個API端點,可以通過發送用戶名和密碼並返回布爾值(真/假)來驗證用戶身份。我的測試要求是這個樣子的:

POST /authenticate ...other headers... [email protected]&password=testuserpassword

有這樣的迴應: <boolean>true</boolean>

的XML是很容易的解析,我有唯一的問題是,Omniauth似乎抽象提供者轉換爲request_phasecallback_phase。我的供應商似乎只有一個request_phase。我該怎麼辦? Omniauth是應用程序的正確工具嗎?

回答

2

我使用自定義設計策略實現了這一點,以及httpclient寶石。從那裏開始,就像調用API端點並解析XML來檢查並查看是否有有效的用戶嘗試登錄一樣簡單。如果用戶以前從未登錄過,則在我的一側創建了無密碼用戶。

+0

你有沒有機會開源你創建的代碼來實現這個? – ryanfelton

+0

@ryanfelton你將不得不調整第5行和第10行,但我可以在我的'config/initializers/devise.rb'中放入類似於此的東西,它工作正常:https://gist.github.com/ fwilson42/737a5089caa62d855fb9 –