Ruby on rails 需要对炫耀文件的授权

Ruby on rails 需要对炫耀文件的授权,ruby-on-rails,swagger,grape-api,Ruby On Rails,Swagger,Grape Api,我正在使用grape、grape-swagger和grape-swagger-rails为我的rails 4.2.1项目设置API。它将是一个内部API,所以我希望开发人员能够访问它,而不是普通公众。最好的方法是什么 我最初的想法是利用api_key字段,您可以在swagger ui中设置该字段,但我无法找到在Grape的根api生成器中访问它的正确方法 我还认为,如果用户是管理员(我们使用的是Desive),我可以尝试只装载文档的端点,但这不会隐藏文档本身(如果有人知道swagger.json

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

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

我还认为,如果用户是管理员(我们使用的是Desive),我可以尝试只装载文档的端点,但这不会隐藏文档本身(如果有人知道
swagger.json
链接)


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

您可以使用
巫术
进行身份验证,它添加了几种非常方便的方法(在下面的
登录?
示例中)和
配置/初始化器/swagger.rb
添加:

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

也可以使用
api_键
。在您的
类API
中,只需在
块之前添加
,以检查
API_键
值是否正确,通过
params
访问它并不完全符合您的要求,但可能会引起一些人的兴趣

要使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"

实际上,我似乎无法访问初始化器中
params
中的
api\u key
。我不想将它声明为每个API方法的参数。我不是指在一个初始值设定项中访问
API\u key
,而是在
app/API/name/API.rb
中的
之前的
块中。这样,就不需要将它声明为每个API方法的参数。