В настоящее время я настроил Devise, Doorkeeper и grape в своем приложении rails. Devise и Doorkeeper настроены так, что я могу зарегистрироваться и войти в систему с помощью Devise на веб-сайте, а Doorkeeper предоставляет конечные точки oAuth, которые могут создавать токены.
Как я могу добавить токен в HttpRequest и защитить с его помощью Grape API?
Изменить: поэтому я попытался реализовать реализацию 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
Я зарегистрировал Winebouncer в качестве промежуточного программного обеспечения в моем базовом контроллере api. приложение \ контроллеры \ 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
А это мой проектcontroller 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.