私は現在、レールアプリケーションで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データを生成しています。