需要授权Swagger文档

时间:2015-10-12 20:26:37

标签: ruby-on-rails swagger grape-api

我正在使用grapegrape-swaggergrape-swagger-rails为我的Rails 4.2.1项目设置API。它将是一个内部API,所以我希望开发人员能够访问它,但不是普通大众。最好的方法是什么?

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

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

过去人们如何处理这个问题?

2 个答案:

答案 0 :(得分:1)

不完全是你所要求的,但它可能会让你们中的一些人感兴趣。

为了在生产中使用 swagger-ui,使用基本身份验证:

# routes.rb
GrapeSwaggerRails::Engine.middleware.use Rack::Auth::Basic do |username, password|
  username == 'foo' && password == 'bar'
end if Rails.env.production?

mount GrapeSwaggerRails::Engine, at: "/swagger"

答案 1 :(得分: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访问它。