13

デスクトップアプリケーションとモバイルアプリケーションの両方があります。両方の「デバイス」に同じRailsアプリケーションを使用したいと思います。つまり、モバイルアプリケーションでデスクトップアプリケーションのコンテンツを要求したいのです。

認証(メール+パスワード)にDeviseを使用しています。モバイルアプリケーションのOauth2トークンを生成するために、デスクトップアプリにDoorkeeperを実装しました。

これが私の質問です:

デスクトップアプリケーションコントローラーを保護するために、before_filtersセットがあります。

  • 認証されて保護されたコントローラーにアクセスするために、モバイルアプリケーションがOAuth2トークンをDeviseと共有する方法がわかりませんか?

実際、今のところ、私のコントローラーのモバイルトークンをdoorkeeper_for :allコードでチェックするのはドアキーパーです。しかし、それを行うには、デバイスの保護を行うことができませんbefore_filter :authenticate_user!...

oauthトークンもデバイスに保存する必要がありますか?

モバイルアプリケーションがdeviseとOAuth2プロトコルでどのように認証されるべきか誤解していますか?

どうも

4

2 に答える 2

11

これは古いですが、まだ答えがありません。

基本的に、DeviseとDoorkeeperは同じことを行っています。Deviseはセッション(または、有効にしている場合はトークン認証)を使用して認証し、Doorkeeperはすべてのリクエストで送信されるOAuthトークンを使用して認証します。

おそらくやりたいことは、アプリケーションを2つのアクセスポイントに分割し、Deviseを使用して通常のデスクトップアクセスを行い、Doorkeeperを使用するAPIを使用することです。通常のデスクトップコントローラーに対してのみDeviseルートを有効にし、APIコントローラーに対してのみドアキーパールートを有効にします。

APIアプリケーションコントローラーで、current_userをオーバーライドしてのようなものにすることができますUser.find(doorkeeper_token.resource_owner_id) if doorkeeper_token。これは、Deviseの認証方法とも一致します。

または、APIでOAuthを使用する必要がない場合は、Deviseのtoken_authenticable構成を使用できます。これは、OAuthのベアラートークンと同様の機能を提供します。

于 2013-05-06T19:38:30.607 に答える
0

あなたの質問を理解したかどうかはわかりませんが、ドアキーパーがコントローラーを完全にロックします。コントローラにある場合、Devise認証を介したアクセスはできませんdoorkeeper_for :all

たとえばAPIコントローラーのように、OAuth2を介してデータを共有するには、別のコントローラーが必要になります。次に、たとえばを介してデータをリクエストできますprotocol://myapp:1234/ressource?access_token=thetoken

それはあなたが求めたものですか?それ以外の場合は明確にしてください:)

于 2012-08-01T08:20:44.243 に答える