我正在使用grape
,grape-swagger
和grape-swagger-rails
为我的Rails 4.2.1项目设置API。它将是一个内部API,所以我希望开发人员能够访问它,但不是普通大众。最好的方法是什么?
我最初的想法是利用您可以在api_key
中设置的swagger-ui
字段,但我无法找到在Grape的根API生成器中访问它的正确方法。
我还认为如果用户是管理员(我们正在使用Devise),我可以尝试仅为文档安装端点,但这并不会隐藏文档本身(如果有人知道swagger.json
链路)。
过去人们如何处理这个问题?
答案 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
访问它。