[英]oAuth2 login on the api for web app in ruby on rails using doorkeeper with the help of devise
[英]API and Application authentication using Devise, Doorkeeper and OAuth2 token
我有桌面應用程序和移動應用程序。 我想為兩個“設備”使用相同的rails應用程序。 換句話說,我希望移動應用程序在桌面應用程序上請求內容。
我使用Devise進行身份驗證(電子郵件+密碼)。 我在桌面應用程序上實現了Doorkeeper,以便為我的移動應用程序生成Oauth2令牌。
這是我的問題:
我在桌面應用程序控制器中設置了before_filters以保護它們。
事實上,現在,門衛應該使用doorkeeper_for檢查我的控制器中的移動令牌doorkeeper_for :all
代碼。 但要做到這一點,我必須無法設計保護before_filter :authenticate_user!
...
我是否應該在設計中保存oauth令牌?
我誤解了移動應用程序應該如何使用devise和OAuth2 protocole進行身份驗證?
謝謝
這已經過時了,但還沒有答案。
基本上Devise和Doorkeeper正在做同樣的事情,Devise使用會話進行身份驗證(如果你已啟用,則使用令牌身份驗證),而Doorkeeper使用每個請求中發送的OAuth令牌進行身份驗證。
你可能想要做的是將你的應用程序分成兩個訪問點,使用Devise進行常規桌面訪問,使用一個使用Doorkeeper的API。 僅為常規桌面控制器啟用設計路由,並僅為api控制器啟用門衛路由。
在您的API應用程序控制器中,如果是User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
,您可以將current_user覆蓋為User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
。 這將與Devise認證的方式相匹配。
或者,如果您的API不必使用OAuth,則可以使用Devise的token_authenticable配置,該配置提供與OAuth的承載令牌類似的功能。
我不確定我是否理解你的問題,但門衛完全鎖定你的控制器。 如果您的控制器中有doorkeeper_for :all
,則無法通過Devise身份驗證進行訪問。
您需要一個單獨的控制器來通過OAuth2共享您的數據,例如API控制器。 然后你可以通過protocol://myapp:1234/ressource?access_token=thetoken
請求數據。
那是你要的嗎? 否則請澄清:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.