2014-10-20 79 views
1

我目前在我的导轨应用程序中配置了Devise,Doorkeeper和葡萄。 Devise和Doorkeeper被配置为可以在网站上注册并使用Devise登录,Doorkeeper提供可创建令牌的oAuth端点。验证葡萄API与门卫

如何添加令牌到HttpRequest并使用它保护葡萄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 

我已经在我的base 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 

这是我projectscontroller 应用程序\控制器\ 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:{范围:[]}” 中的说明ription是suppossed工作。以及如何将令牌添加到请求中,但我希望我的请求被阻止,但在未添加令牌时会被阻止。但该请求仍在生成json数据。

回答

2

我在这里发现了相当有趣的代码:https://github.com/fuCtor/grape-doorkeeper 它似乎仍然保持。但我认为这很好,只是想知道那里发生了什么。

我会推荐这个:https://github.com/antek-drzewiecki/wine_bouncer 为页面上说:

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

+0

我在看winebouncer,但我想我有一个错误的HttpRequest格式。我一直收到错误500.你知道正确的格式吗? – 2014-10-21 20:10:31

+0

@SanderObdeijn你能提供更多的信息吗?像实施的一些部分和你得到的确切的错误? – 2014-10-21 20:22:59

+0

我无法使wine_bouncer正常工作。但葡萄门卫很好。 – 2014-11-15 18:54:48

0

obedeijn,我只是注意到你的问题在stackoverflow。 WineBouncer与守门人一样工作,它使用“承载x”查找授权标头,其中x是标记。