用门卫验证葡萄api

时间:2014-10-20 18:13:22

标签: ruby-on-rails grape doorkeeper

我目前在我的rails应用程序中配置了Devise,Doorkeeper和grape。 配置Devise和Doorkeeper,以便我可以在网站上注册和登录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注册为葡萄中间件。 应用\控制器\ API \ base.rb

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

我将我的项目控制器安装在我的V1基本控制器中 应用\控制器\ API \ V1 \ base.rb

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

这是我的项目控制器 应用\控制器\ 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

说实话,我还不知道&#34;,auth:{scopes:[]}&#34;在描述中被假定工作。以及如何将令牌添加到请求中,但我希望我的请求可以在没有添加令牌时被阻止。但是请求仍在生成json数据。

2 个答案:

答案 0 :(得分:2)

我在这里发现了非常有趣的代码:https://github.com/fuCtor/grape-doorkeeper 它似乎仍然保持着。但我认为这只是为了了解那里发生的事情。

我建议这样做:https://github.com/antek-drzewiecki/wine_bouncer 正如页面上所述:

  

使用门卫保护您珍贵的葡萄API。 WineBouncer使用   最小的修改,使魔术发生。

答案 1 :(得分:0)

obedeijn,我刚刚注意到你在stackoverflow上的问题。 WineBouncer就像门卫一样工作,它查找带有“Bearer x”的Authorizations标头,其中x是令牌。