2015-10-12 57 views
2

我使用grapegrape-swaggergrape-swagger-rails为我的Rails 4.2.1项目设置了一个API。这将是一个内部API,所以我希望开发人员能够访问它,但不是普通大众。什么是最好的方式来做到这一点?要求获得Swagger文档的授权

我最初的想法是利用api_key字段,您可以在swagger-ui中设置,但我无法找到在Grape的根API生成器内访问它的正确方法。

我也认为如果用户是管理员(我们正在使用Devise),我可以尝试只安装文档的端点,但这并不隐藏文档本身(如果有人知道swagger.json链接)。

过去人们怎么处理这个问题?

回答

0

可以使用sorcery进行身份验证这增加了几个非常有用的方法(在下面logged_in?的例子),并在config/initializers/swagger.rb加:

GrapeSwaggerRails.options.before_filter do |request| 
    unless logged_in? 
    redirect_to Rails.application.routes.url_helpers.root_path 
    end 
end 

使用api_key也是可能的。在您的class API < Grape::API只需添加before块在哪里检查api_key值是否正确,通过params访问它。

+0

我实际上似乎无法在初始化程序中的'params'中访问'api_key'。我不想将其声明为每个API方法的参数。 –

+0

我并不是指在一个初始化函数中访问'api_key',而是在'app/api/name/api.rb'中的'before'块中访问'api_key'。就像那样,不需要将其声明为每个API方法的参数。 – Brozorec