0

私は現在、レールアプリケーションでDevise、Doorkeeper、およびブドウを構成しています。Devise と Doorkeeper は、Web サイトで Devise に登録してログインできるように構成されており、Doorkeeper はトークンを作成できる oAuth エンドポイントを提供します。

トークンを HttpRequest に追加して、ブドウ API を保護するにはどうすればよいですか?

編集: そこで、Tom Hert が提案した Winebouncer 実装を実装しようとしました。https://github.com/antek-drzewiecki/wine_bouncerの指示に従いました

ジェムをインストールしました。config/initializers/wine_bouncer.rb を次のように定義しました。

WineBouncer.configure do |config|
  config.auth_strategy = :default

  config.define_resource_owner do
    User.find(doorkeeper_access_token.resource_owner_id) if doorkeeper_access_token
  end
end

ベース API コントローラーで、ブドウのミドルウェアとして Winebouncer を登録しました。app\controllers\api\base.rb

module API
  class Base < Grape::API
    mount API::V1::Base
    use ::WineBouncer::OAuth2
  end
end

プロジェクトコントローラーを V1 ベースコントローラー app\controllers\api\v1\base.rb にマウントしました

module API
  module V1
    class Base < Grape::API
      mount API::V1::Projects
    end
  end
end

そして、これは私のprojectscontroller app\controllers\api\v1\projects.rbです

module API
  module V1
    class Projects < Grape::API
      version 'v1'
      format :json

      resource :projects do
        desc "Return list of projects" , auth: { scopes: [] }
        get do
          Project.all
        end
      end
    end
  end
end

正直なところ、説明の「, auth: { scopes: [] }」がどのように機能するかはまだわかりません。トークンをリクエストに追加する方法ですが、トークンが追加されていない場合、リクエストはブロックされます。しかし、リクエストはまだjsonデータを生成しています。

4

2 に答える 2

2

ここで非常に興味深いコードを見つけました: https://github.com/fuCtor/grape-doorkeeper まだ維持されているようです。しかし、そこで何が起こっているのかを理解するには、これは良いことだと思います。

私はこれをお勧めします: https://github.com/antek-drzewiecki/wine_bouncer ページで述べたように:

Doorkeeper で貴重な Grape API を保護します。WineBouncer は最小限の変更を使用して魔法を実現します。

于 2014-10-20T18:37:30.293 に答える
0

obedeijn さん、stackoverflow に関するあなたの質問に気付きました。WineBouncer は、ドアキーパーと同じように機能します。x がトークンである "Bearer x" を持つ Authorizations ヘッダーを探します。

于 2014-11-28T10:07:02.870 に答える